mirror of
https://git.dev.opencascade.org/repos/occt.git
synced 2025-04-06 18:26:22 +03:00
0024495: Crash during performeng boolean operation on attached shape for Windows VC2010 64 bit
Recursion in the method Path in BOPAlgo_WireSplitter has been replaced with cycle.
This commit is contained in:
parent
6a866b3268
commit
b7357c8b55
@ -326,9 +326,9 @@ static
|
||||
//=======================================================================
|
||||
void Path (const GeomAdaptor_Surface& aGAS,
|
||||
const TopoDS_Face& myFace,
|
||||
const TopoDS_Vertex& aVa,
|
||||
const TopoDS_Edge& aEOuta,
|
||||
BOPAlgo_EdgeInfo& anEdgeInfo,
|
||||
const TopoDS_Vertex& aVFirst,
|
||||
const TopoDS_Edge& aEFirst,
|
||||
BOPAlgo_EdgeInfo& aEIFirst,
|
||||
BOPCol_SequenceOfShape& aLS,
|
||||
BOPCol_SequenceOfShape& aVertVa,
|
||||
BOPCol_SequenceOfPnt2d& aCoordVa,
|
||||
@ -341,15 +341,20 @@ void Path (const GeomAdaptor_Surface& aGAS,
|
||||
Standard_Real aTol2D, aTol2D2;
|
||||
Standard_Real aTol2, aD2, aTwoPI;
|
||||
Standard_Boolean anIsSameV2d, anIsSameV, anIsFound, anIsOut, anIsNotPassed;
|
||||
TopoDS_Vertex aVb;
|
||||
TopoDS_Edge aEOutb;
|
||||
TopoDS_Vertex aVa, aVb;
|
||||
TopoDS_Edge aEOuta;
|
||||
BOPAlgo_ListIteratorOfListOfEdgeInfo anIt;
|
||||
//
|
||||
aVa = aVFirst;
|
||||
aEOuta = aEFirst;
|
||||
BOPAlgo_EdgeInfo* anEdgeInfo = &aEIFirst;
|
||||
//
|
||||
aTwoPI = M_PI + M_PI;
|
||||
aTol=1.e-7;
|
||||
//
|
||||
// append block
|
||||
//
|
||||
for (;;) {
|
||||
// Do not escape through edge from which you enter
|
||||
aNb=aLS.Length();
|
||||
if (aNb==1) {
|
||||
@ -359,7 +364,7 @@ void Path (const GeomAdaptor_Surface& aGAS,
|
||||
}
|
||||
}
|
||||
//
|
||||
anEdgeInfo.SetPassed(Standard_True);
|
||||
anEdgeInfo->SetPassed(Standard_True);
|
||||
aLS.Append(aEOuta);
|
||||
aVertVa.Append(aVa);
|
||||
|
||||
@ -560,11 +565,11 @@ void Path (const GeomAdaptor_Surface& aGAS,
|
||||
// no way to go . (Error)
|
||||
return;
|
||||
}
|
||||
|
||||
aEOutb=pEdgeInfo->Edge();
|
||||
//
|
||||
Path (aGAS, myFace, aVb, aEOutb, *pEdgeInfo, aLS,
|
||||
aVertVa, aCoordVa, aCB, mySmartMap);
|
||||
aVa = aVb;
|
||||
aEOuta = pEdgeInfo->Edge();
|
||||
anEdgeInfo = pEdgeInfo;
|
||||
}
|
||||
}
|
||||
//=======================================================================
|
||||
// function: ClockWiseAngle
|
||||
|
Loading…
x
Reference in New Issue
Block a user