]> SALOME platform Git repositories - modules/smesh.git/commitdiff
Salome HOME
IPAL8739. Fix ReleaseID() for the case ID == myMaxID && myPoolOfID.empty()
authoreap <eap@opencascade.com>
Thu, 12 May 2005 05:22:18 +0000 (05:22 +0000)
committereap <eap@opencascade.com>
Thu, 12 May 2005 05:22:18 +0000 (05:22 +0000)
src/SMDS/SMDS_MeshIDFactory.cxx

index 74ac917ddbfa02cb7dfd1965ca5471e3ec369fb6..536b2f7835974448c9f8af4f2dc8a1297508e09b 100644 (file)
@@ -57,16 +57,27 @@ int SMDS_MeshIDFactory::GetFreeID()
 //=======================================================================
 void SMDS_MeshIDFactory::ReleaseID(const int ID)
 {
-  if (ID > 0 && ID < myMaxID) myPoolOfID./*push*/insert(ID);
-  if (ID > 0 && ID == myMaxID ) {
-    set<int>::iterator i = --myPoolOfID.end();
-    while ( i != myPoolOfID.begin() )
-      if ( --myMaxID != *(--i) )
-        break;
-    if ( myMaxID == *i )
-      --myMaxID; // begin of myPoolOfID reached
-    else
-      ++i;
-    myPoolOfID.erase( i, myPoolOfID.end() );
+  if ( ID > 0 )
+  {
+    if ( ID < myMaxID )
+    {
+      myPoolOfID.insert(ID);
+    }
+    else if ( ID == myMaxID )
+    {
+      --myMaxID;
+      if ( !myPoolOfID.empty() ) // assure that myMaxID is not in myPoolOfID
+      {
+        set<int>::iterator i = --myPoolOfID.end();
+        while ( i != myPoolOfID.begin() && myMaxID == *i ) {
+          --myMaxID; --i;
+        }
+        if ( myMaxID == *i )
+          --myMaxID; // begin of myPoolOfID reached
+        else
+          ++i;
+        myPoolOfID.erase( i, myPoolOfID.end() );
+      }
+    }
   }
 }