During remove node from STL map, please take about iterator. Problem noticed under Rational Purify

This commit is contained in:
ptv 2006-07-03 07:47:19 +00:00
parent 20ed825b55
commit aabfa4fe38

View File

@ -1266,17 +1266,22 @@ bool SMDS_VolumeTool::IsFreeFace( int faceIndex )
if ( IsFaceExternal( faceIndex )) if ( IsFaceExternal( faceIndex ))
intNormal = XYZ( -intNormal.x, -intNormal.y, -intNormal.z ); intNormal = XYZ( -intNormal.x, -intNormal.y, -intNormal.z );
XYZ p0 ( nodes[0] ), baryCenter; XYZ p0 ( nodes[0] ), baryCenter;
for ( vNbIt = volNbShared.begin(); vNbIt != volNbShared.end(); vNbIt++ ) { for ( vNbIt = volNbShared.begin(); vNbIt != volNbShared.end(); ) {
int nbShared = (*vNbIt).second; int nbShared = (*vNbIt).second;
if ( nbShared >= 3 ) { if ( nbShared >= 3 ) {
SMDS_VolumeTool volume( (*vNbIt).first ); SMDS_VolumeTool volume( (*vNbIt).first );
volume.GetBaryCenter( baryCenter.x, baryCenter.y, baryCenter.z ); volume.GetBaryCenter( baryCenter.x, baryCenter.y, baryCenter.z );
XYZ intNormal2( baryCenter - p0 ); XYZ intNormal2( baryCenter - p0 );
if ( intNormal.Dot( intNormal2 ) < 0 ) if ( intNormal.Dot( intNormal2 ) < 0 )
{
vNbIt++;
continue; // opposite side continue; // opposite side
}
} }
// remove a volume from volNbShared map // remove a volume from volNbShared map
volNbShared.erase( vNbIt ); TElemIntMap::iterator vErIt = vNbIt;
vNbIt++;
volNbShared.erase( vErIt );
} }
// here volNbShared contains only volumes laying on the // here volNbShared contains only volumes laying on the