Fixed a memory leak in mxarray
authorhbristow <hilton.bristow@gmail.com>
Wed, 18 Sep 2013 07:10:54 +0000 (17:10 +1000)
committerhbristow <hilton.bristow@gmail.com>
Wed, 18 Sep 2013 07:10:54 +0000 (17:10 +1000)
modules/matlab/include/opencv2/matlab/mxarray.hpp

index 047ec43..3d46ed4 100644 (file)
@@ -113,7 +113,7 @@ template<typename _Tp = DefaultTraits> 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
@@ -249,6 +249,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
    *
    * Inherit an mxArray from Matlab. Don't claim ownership of the array,
@@ -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<mwSize>(m), static_cast<mwSize>(n), static_cast<mwSize>(k) };
     ptr_ = mxCreateNumericArray(3, dims, id, com);
   }
@@ -319,16 +330,6 @@ public:
   }
 
   /*!
-   * @brief destructor
-   *
-   * The destructor deallocates any data allocated by mxCreate* methods only
-   * if the object is owned
-   */
-  virtual ~MxArray() {
-    dealloc();
-  }
-
-  /*!
    * @brief copy constructor
    *
    * All copies are deep copies. If you have a C++11 compatible compiler, prefer