0022232: [CEA 837] Memory corruption in GEOM/SMESH that leads to segfault on debian64

Fix
==7374== Invalid read of size 8
==7374==    at 0x6B1F53F: TCollection_BasicMapIterator::Next() (in libTKernel.so.0.0.0)
==7374==    by 0x3A120D3A: GEOMAlgo_Builder::FillInternalShapes() (GEOMAlgo_Builder_3.cxx:717)

- in FillInternalShapes() fix removal of map items while iteration through the map
This commit is contained in:
eap 2013-06-19 14:28:05 +00:00
parent 5de463a68d
commit 0c3b75095a

View File

@ -714,8 +714,9 @@ void GEOMAlgo_Builder::BuildDraftSolid (const TopoDS_Shape& theSolid,
TopoDS_Solid aSd=TopoDS::Solid(aIt.Value());
//
aItM.Initialize(aMSI);
for (; aItM.More(); aItM.Next()) {
for (; aItM.More(); /*aItM.Next()*/) {
TopoDS_Shape aSI=aItM.Key();
aItM.Next(); // to safely call aMSI.Remove(aSI)
aSI.Orientation(TopAbs_INTERNAL);
//
aState=GEOMAlgo_Tools3D::ComputeStateByOnePoint(aSI, aSd, 1.e-11, aCtx);