From 1dd017e9d0882822ea2ceb1f264a425be8af4906 Mon Sep 17 00:00:00 2001 From: hbristow Date: Wed, 18 Sep 2013 17:10:54 +1000 Subject: [PATCH] Fixed a memory leak in mxarray --- .../matlab/include/opencv2/matlab/mxarray.hpp | 25 ++++++++++--------- 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/modules/matlab/include/opencv2/matlab/mxarray.hpp b/modules/matlab/include/opencv2/matlab/mxarray.hpp index 047ec43a58..3d46ed4506 100644 --- a/modules/matlab/include/opencv2/matlab/mxarray.hpp +++ b/modules/matlab/include/opencv2/matlab/mxarray.hpp @@ -113,7 +113,7 @@ template class Traits { public: static const mxClassID ScalarType = mxUNKNOWN_CLASS; static const mxComplexity Complex = mxCOMPLEX; - static const mxComplexity Real = mxCOMPLEX; + static const mxComplexity Real = mxREAL; static std::string ToString() { return "Unknown/Unsupported"; } }; // bool @@ -248,6 +248,16 @@ public: */ MxArray() : ptr_(mxCreateDoubleMatrix(0, 0, matlab::Traits<>::Real)), owns_(true) {} + /*! + * @brief destructor + * + * The destructor deallocates any data allocated by mxCreate* methods only + * if the object is owned + */ + virtual ~MxArray() { + dealloc(); + } + /*! * @brief inheriting constructor * @@ -267,7 +277,8 @@ public: * * This constructor explicitly creates an MxArray of the given size and type. */ - MxArray(size_t m, size_t n, size_t k, mxClassID id, mxComplexity com = matlab::Traits<>::Real) : owns_(true) { + MxArray(size_t m, size_t n, size_t k, mxClassID id, mxComplexity com = matlab::Traits<>::Real) + : ptr_(NULL), owns_(true) { mwSize dims[] = { static_cast(m), static_cast(n), static_cast(k) }; ptr_ = mxCreateNumericArray(3, dims, id, com); } @@ -318,16 +329,6 @@ public: return s; } - /*! - * @brief destructor - * - * The destructor deallocates any data allocated by mxCreate* methods only - * if the object is owned - */ - virtual ~MxArray() { - dealloc(); - } - /*! * @brief copy constructor *