Salome HOME
PAL16774 (Crash after display of many groups)
authoreap <eap@opencascade.com>
Wed, 7 Nov 2007 09:28:28 +0000 (09:28 +0000)
committereap <eap@opencascade.com>
Wed, 7 Nov 2007 09:28:28 +0000 (09:28 +0000)
     implement destructor to free memory at closing a study

src/SMESHDS/SMESHDS_Document.cxx
src/SMESHDS/SMESHDS_Mesh.cxx

index 87fb9a0d43a28402c8848af156bd6fc086befb9a..815474d55a8331d67b4823b2327042ac805e2cc5 100644 (file)
@@ -39,6 +39,18 @@ SMESHDS_Document::SMESHDS_Document(int UserID):myUserID(UserID)
 {
 }
 
+//=======================================================================
+//function : Destructor
+//purpose  : 
+//=======================================================================
+
+SMESHDS_Document::~SMESHDS_Document()
+{
+  InitMeshesIterator();
+  while ( MoreMesh() )
+    delete NextMesh();
+}
+
 //=======================================================================
 //function : NewMesh
 //purpose  : 
index 4e75617552ee87f41fa6db7bb022b01a2311e814..18b13fc5d4ccc2f4b1bf57e70f1c1c598e8c3371 100644 (file)
@@ -1220,13 +1220,21 @@ void SMESHDS_Mesh::SetMeshElementOnShape(const SMDS_MeshElement* anElement,
   add( anElement, getSubmesh( Index ));
 }
 
+//=======================================================================
+//function : ~SMESHDS_Mesh
+//purpose  : 
+//=======================================================================
 SMESHDS_Mesh::~SMESHDS_Mesh()
 {
+  // myScript
   delete myScript;
+  // submeshes
+  TShapeIndexToSubMesh::iterator i_sm = myShapeIndexToSubMesh.begin();
+  for ( ; i_sm != myShapeIndexToSubMesh.end(); ++i_sm )
+    delete i_sm->second;
 }
 
 
-
 //********************************************************************
 //********************************************************************
 //********                                                   *********