Salome HOME
Merge branch 'master' into pre/penta18
[modules/smesh.git] / src / SMESHDS / SMESHDS_TSubMeshHolder.hxx
index b6fa226da3006dbaf377c5b004ff655652d299d3..d637e7e16ba0a5a7c96427066d0c7e2935fe507b 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2014  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2016  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
@@ -54,7 +54,7 @@ public:
     }
     else
     {
-      if ( myVec.size() <= id )
+      if ( (int)myVec.size() <= id )
         myVec.resize( id+1, (SUBMESH*) NULL );
       myVec[ id ] = sm;
     }
@@ -68,18 +68,26 @@ public:
     }
     else
     {
-      return (SUBMESH*) ( id >= myVec.size() ? NULL : myVec[ id ]);
+      return (SUBMESH*) ( id >= (int)myVec.size() ? NULL : myVec[ id ]);
     }
   }
   void DeleteAll()
   {
     for ( size_t i = 0; i < myVec.size(); ++i )
-      delete myVec[i];
+      if ( SUBMESH* sm = myVec[i] )
+      {
+        myVec[i] = 0; // avoid access via Get(i)
+        delete sm;
+      }
     myVec.clear();
 
     typename std::map< int, SUBMESH* >::iterator i2sm = myMap.begin();
     for ( ; i2sm != myMap.end(); ++i2sm )
-      delete i2sm->second;
+      if ( SUBMESH* sm = i2sm->second )
+      {
+        i2sm->second = 0; // avoid access via Get(i)
+        delete sm;
+      }
     myMap.clear();
   }
   int GetMinID() const