]> SALOME platform Git repositories - modules/smesh.git/blobdiff - src/SMESH_I/SMESH_Mesh_i.cxx
Salome HOME
Fix of IPAL19448 (Qt4 porting: application hungs up at several Import MED file cycles).
[modules/smesh.git] / src / SMESH_I / SMESH_Mesh_i.cxx
index 32e8ee2bc15be6d9e36a7b8a6eef3b84bd38fab3..7a6256462247a08395ac5b36d7b2173414d0da96 100644 (file)
@@ -121,6 +121,7 @@ SMESH_Mesh_i::~SMESH_Mesh_i()
       // this method is colled from destructor of group (PAL6331)
       //_impl->RemoveGroup( aGroup->GetLocalID() );
 
+      removeGroup( aGroup->GetLocalID() );
       aGroup->Destroy();
     }
   }
@@ -1946,12 +1947,12 @@ SMESH::long_array* SMESH_Mesh_i::GetSubMeshNodesId(const CORBA::Long ShapeID, CO
   SMESHDS_SubMesh* SDSM = SM->GetSubMeshDS();
   if(!SDSM) return aResult._retn();
 
-  map<int,const SMDS_MeshElement*> theElems;
-  if( !all || (SDSM->NbElements()==0 && SDSM->NbNodes()==1) ) {
+  set<int> theElems;
+  if( !all || (SDSM->NbElements()==0) ) { // internal nodes or vertex submesh
     SMDS_NodeIteratorPtr nIt = SDSM->GetNodes();
     while ( nIt->more() ) {
       const SMDS_MeshNode* elem = nIt->next();
-      theElems.insert( make_pair(elem->GetID(),elem) );
+      theElems.insert( elem->GetID() );
     }
   }
   else { // all nodes of submesh elements
@@ -1961,16 +1962,16 @@ SMESH::long_array* SMESH_Mesh_i::GetSubMeshNodesId(const CORBA::Long ShapeID, CO
       SMDS_ElemIteratorPtr nIt = anElem->nodesIterator();
       while ( nIt->more() ) {
         const SMDS_MeshElement* elem = nIt->next();
-        theElems.insert( make_pair(elem->GetID(),elem) );
+        theElems.insert( elem->GetID() );
       }
     }
   }
 
   aResult->length(theElems.size());
-  map<int, const SMDS_MeshElement * >::iterator itElem;
+  set<int>::iterator itElem;
   int i = 0;
   for ( itElem = theElems.begin(); itElem != theElems.end(); itElem++ )
-    aResult[i++] = (*itElem).first;
+    aResult[i++] = *itElem;
 
   return aResult._retn();
 }