X-Git-Url: http://git.salome-platform.org/gitweb/?p=modules%2Fsmesh.git;a=blobdiff_plain;f=src%2FSMDS%2FSMDS_MeshIDFactory.cxx;h=cc765d8665910c5424f82372544ec8acaa6ecd03;hp=74e5e401df8fe78adc9c8fc3cef9dcd840ae3439;hb=6b1de623316c78e9bc6e18b7e2a98883bd800ff1;hpb=d2a8dd635ec65f5f0e21ce3d03d59d34f9b5291d;ds=sidebyside diff --git a/src/SMDS/SMDS_MeshIDFactory.cxx b/src/SMDS/SMDS_MeshIDFactory.cxx index 74e5e401d..cc765d866 100644 --- a/src/SMDS/SMDS_MeshIDFactory.cxx +++ b/src/SMDS/SMDS_MeshIDFactory.cxx @@ -50,8 +50,8 @@ int SMDS_MeshIDFactory::GetFreeID() else { set::iterator i = myPoolOfID.begin(); - newid = *i;//myPoolOfID.top(); - myPoolOfID.erase( i );//myPoolOfID.pop(); + newid = *i; + myPoolOfID.erase( i ); } return newid; } @@ -77,11 +77,13 @@ void SMDS_MeshIDFactory::ReleaseID(int ID, int vtkId) while ( i != myPoolOfID.begin() && myMaxID == *i ) { --myMaxID; --i; } - if ( myMaxID == *i ) + if ( myMaxID == *i ) { --myMaxID; // begin of myPoolOfID reached - else - ++i; - myPoolOfID.erase( i, myPoolOfID.end() ); + myPoolOfID.clear(); + } + else if ( myMaxID < ID-1 ) { + myPoolOfID.erase( ++i, myPoolOfID.end() ); + } } } }