Salome HOME
PR: debug memory leak (EDF 2662)
authorprascle <prascle>
Thu, 20 Jun 2013 12:22:27 +0000 (12:22 +0000)
committerprascle <prascle>
Thu, 20 Jun 2013 12:22:27 +0000 (12:22 +0000)
non virtual destructors and missing delete...

src/SMESH/SMESH_MeshEditor.cxx
src/SMESH/SMESH_MeshEditor.hxx
src/SMESHUtils/SMESH_Octree.hxx
src/SMESHUtils/SMESH_Tree.hxx

index c6605815ae5311e4e47a368d72882e0799c9edae..fc9202018a0fbbbba05583ad066dc8ae74cfa827 100644 (file)
@@ -6360,7 +6360,7 @@ namespace // Utils used in SMESH_ElementSearcherImpl::FindElementsByPoint()
     void getElementsInSphere ( const gp_XYZ& center,
                                const double  radius, TIDSortedElemSet& foundElems);
     size_t getSize() { return std::max( _size, _elements.size() ); }
-    ~ElementBndBoxTree();
+    virtual ~ElementBndBoxTree();
 
   protected:
     ElementBndBoxTree():_size(0) {}
@@ -6559,6 +6559,9 @@ namespace // Utils used in SMESH_ElementSearcherImpl::FindElementsByPoint()
  *        of classification of point in 2D mesh
  */
 //=======================================================================
+SMESH_ElementSearcher::~SMESH_ElementSearcher()
+{
+}
 
 struct SMESH_ElementSearcherImpl: public SMESH_ElementSearcher
 {
@@ -6572,8 +6575,8 @@ struct SMESH_ElementSearcherImpl: public SMESH_ElementSearcher
   set<const SMDS_MeshElement*> _outerFaces; // empty means "no internal faces at all"
 
   SMESH_ElementSearcherImpl( SMESHDS_Mesh& mesh, SMDS_ElemIteratorPtr elemIt=SMDS_ElemIteratorPtr())
-    : _mesh(&mesh),_meshPartIt(elemIt),_ebbTree(0),_nodeSearcher(0),_tolerance(-1),_outerFacesFound(false) {}
-  ~SMESH_ElementSearcherImpl()
+    : _mesh(&mesh),_meshPartIt(elemIt),_ebbTree(0),_nodeSearcher(0),_tolerance(-1),_outerFacesFound(false) {MESSAGE("-----------> SMESH_ElementSearcherImpl constructor");}
+  virtual ~SMESH_ElementSearcherImpl()
   {
     if ( _ebbTree )      delete _ebbTree;      _ebbTree      = 0;
     if ( _nodeSearcher ) delete _nodeSearcher; _nodeSearcher = 0;
index bf1d3b7b1ce9c5be34388018f8b6b94e1efe8836..5011d7f014898498edb5d8531d94459dcd075ec9 100644 (file)
@@ -96,6 +96,7 @@ struct SMESH_ElementSearcher
    * \brief Find out if the given point is out of closed 2D mesh.
    */
   virtual TopAbs_State GetPointState(const gp_Pnt& point) = 0;
+  virtual ~SMESH_ElementSearcher();
 
 };
 
index 5fa0e6533a3edb95ceb7f1bb8df23a716e473307..adb74b560f5d5119c853ede6777a810a59998eab 100644 (file)
@@ -49,6 +49,7 @@ public:
   // Constructor. limit must be provided at tree root construction.
   // limit will be deleted by SMESH_Octree
   SMESH_Octree (SMESH_TreeLimit* limit=0);
+  virtual ~SMESH_Octree() {};
 
   // Compute the bigger dimension of my box
   double                 maxSize() const;
index bf099d305c9c1a815a6134b4a4da9dc7207bde36..7704893d27a05318133f2b1548d194564e9d194c 100644 (file)
@@ -1,24 +1,24 @@
-// Copyright (C) 2007-2013  CEA/DEN, EDF R&D, OPEN CASCADE
-//
-// Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
-//
-// This library is free software; you can redistribute it and/or
-// modify it under the terms of the GNU Lesser General Public
-// License as published by the Free Software Foundation; either
-// version 2.1 of the License.
-//
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-// Lesser General Public License for more details.
-//
-// You should have received a copy of the GNU Lesser General Public
-// License along with this library; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
-//
-// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
-//
+// Copyright (C) 2007-2013  CEA/DEN, EDF R&D, OPEN CASCADE\r
+//\r
+// Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,\r
+// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS\r
+//\r
+// This library is free software; you can redistribute it and/or\r
+// modify it under the terms of the GNU Lesser General Public\r
+// License as published by the Free Software Foundation; either\r
+// version 2.1 of the License.\r
+//\r
+// This library is distributed in the hope that it will be useful,\r
+// but WITHOUT ANY WARRANTY; without even the implied warranty of\r
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\r
+// Lesser General Public License for more details.\r
+//\r
+// You should have received a copy of the GNU Lesser General Public\r
+// License along with this library; if not, write to the Free Software\r
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA\r
+//\r
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com\r
+//\r
 \r
 //  SMESH SMESH_Tree : tree implementation\r
 //  File      : SMESH_Tree.hxx\r
@@ -218,6 +218,8 @@ void SMESH_Tree<BND_BOX,NB_CHILDREN>::buildChildren()
     myChildren[i] = newChild();\r
     // and we assign to him its box.\r
     myChildren[i]->myFather = this;\r
+    if (myChildren[i]->myLimit)\r
+      delete myChildren[i]->myLimit;\r
     myChildren[i]->myLimit = myLimit;\r
     myChildren[i]->myLevel = myLevel + 1;\r
     myChildren[i]->myBox = newChildBox( i );\r