Salome HOME
Fix for bug IPAL19437.
authormzn <mzn@opencascade.com>
Wed, 21 May 2008 08:46:45 +0000 (08:46 +0000)
committermzn <mzn@opencascade.com>
Wed, 21 May 2008 08:46:45 +0000 (08:46 +0000)
src/SMESH_I/SMESH_Gen_i.cxx
src/SMESH_I/SMESH_Group_i.cxx
src/SMESH_I/SMESH_Mesh_i.cxx

index 4b0f6971d6f26b22770c276ae54138b2093cfb08..f05003b01e792dca700248e5fe9373e074bbe896 100644 (file)
@@ -3603,10 +3603,16 @@ void SMESH_Gen_i::Close( SALOMEDS::SComponent_ptr theComponent )
   }
 
   // delete SMESH_Mesh's
-  StudyContextStruct* context = myGen.GetStudyContext( studyId );
-  map< int, SMESH_Mesh* >::iterator i_mesh = context->mapMesh.begin();
-  for ( ; i_mesh != context->mapMesh.end(); ++i_mesh )
-    delete i_mesh->second;
+//   See bug IPAL19437.
+//
+//   StudyContextStruct* context = myGen.GetStudyContext( studyId );
+//   map< int, SMESH_Mesh* >::iterator i_mesh = context->mapMesh.begin();
+//   for ( ; i_mesh != context->mapMesh.end(); ++i_mesh ) {
+//     printf( "--------------------------- SMESH_Gen_i::Close, delete aGroup = %p \n", i_mesh->second );
+//     delete i_mesh->second;
+//   }
+  
+
   // delete SMESHDS_Mesh's
   // it's too long on big meshes
 //   if ( context->myDocument ) {
index 66113ca185f8f21543b12474e0c4e89f5c151717..9f4c705f3aadbe423ed1258ec8420e4b540d51ad 100644 (file)
@@ -80,9 +80,8 @@ SMESH_GroupOnGeom_i::SMESH_GroupOnGeom_i( PortableServer::POA_ptr thePOA, SMESH_
 SMESH_GroupBase_i::~SMESH_GroupBase_i()
 {
   MESSAGE("~SMESH_GroupBase_i; this = "<<this );
-  // akl: removeGroup() is called from SMESH_Mesh_i() destructor
-  // if ( myMeshServant )
-  //   myMeshServant->removeGroup(myLocalID);
+  if ( myMeshServant )
+    myMeshServant->removeGroup(myLocalID);
 }
 
 //=======================================================================
index 7a6256462247a08395ac5b36d7b2173414d0da96..a52c3b0c2cef3fe7d61804767797881e9f545ba3 100644 (file)
@@ -117,15 +117,14 @@ SMESH_Mesh_i::~SMESH_Mesh_i()
   for ( it = _mapGroups.begin(); it != _mapGroups.end(); it++ ) {
     SMESH_GroupBase_i* aGroup = dynamic_cast<SMESH_GroupBase_i*>( SMESH_Gen_i::GetServant( it->second ).in() );
     if ( aGroup ) {
-
       // this method is colled from destructor of group (PAL6331)
       //_impl->RemoveGroup( aGroup->GetLocalID() );
-
-      removeGroup( aGroup->GetLocalID() );
+      
       aGroup->Destroy();
     }
   }
   _mapGroups.clear();
+  delete _impl;
 }
 
 //=============================================================================