Salome HOME
Correct some memory leaks
[modules/smesh.git] / src / SMESH / SMESH_subMesh.cxx
index 711baf691739a8a014279b5228ebbfff735f381d..9fae1d7ab48b777bd7e9a0081cb717b059fb4526 100644 (file)
@@ -1321,27 +1321,23 @@ void SMESH_subMesh::RemoveSubMeshElementsAndNodes()
        _subMeshDS = _meshDS->MeshElements(_subShape);
        if (_subMeshDS!=NULL)
        {
-               const vector<int> & indElt = _subMeshDS->GetIDElements();
-               vector<int>::const_iterator ite=indElt.begin();
-               for (; ite!=indElt.end(); ite++)
+               SMDS_Iterator<const SMDS_MeshElement *> * ite=_subMeshDS->GetElements();
+               while(ite->more())
                {
-                       int eltId = *ite;
-                       SCRUTE(eltId);
-                       const SMDS_MeshElement * elt = _meshDS->FindElement(eltId);
+                       const SMDS_MeshElement * elt = ite->next();
                        _subMeshDS->RemoveElement(elt);
-                       _meshDS->RemoveElement(eltId);
+                       _meshDS->RemoveElement(elt);
                }
-
-               const vector<int> & indNodes = _subMeshDS->GetIDNodes();
-               vector<int>::const_iterator itn=indNodes.begin();
-               for (; itn!=indNodes.end(); itn++)
+               delete ite;
+               
+               SMDS_Iterator<const SMDS_MeshNode *> * itn=_subMeshDS->GetNodes();
+               while(itn->more())
                {
-                       int nodeId = *itn;
-                       SCRUTE(nodeId);
-                       const SMDS_MeshNode * node = _meshDS->FindNode(nodeId);
+                       const SMDS_MeshNode * node = itn->next();
                        _subMeshDS->RemoveNode(node);
-                       _meshDS->RemoveNode(nodeId);
+                       _meshDS->RemoveNode(node);
                }
+               delete itn;
        }
 }