From 96d4000f3b0f9ea868af7ce490d476ccc28726ff Mon Sep 17 00:00:00 2001 From: akondrat Date: Wed, 10 Aug 2022 13:45:58 +0300 Subject: [PATCH] 0024909: Modeling Algorithms - SIGSEGV in buildsweep Update algorithm. --- src/Extrema/Extrema_ExtCC.cxx | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/Extrema/Extrema_ExtCC.cxx b/src/Extrema/Extrema_ExtCC.cxx index 0466dc2ec1..dace735cdf 100644 --- a/src/Extrema/Extrema_ExtCC.cxx +++ b/src/Extrema/Extrema_ExtCC.cxx @@ -411,7 +411,7 @@ void Extrema_ExtCC::PrepareParallelResult(const Standard_Real theUt11, if (((aType1 != GeomAbs_Line) && (aType1 != GeomAbs_Circle)) || ((aType2 != GeomAbs_Line) && (aType2 != GeomAbs_Circle))) { - //mySqDist.Append(theSqDist); + mySqDist.Append(theSqDist); myDone = Standard_True; myIsParallel = Standard_True; return; @@ -432,7 +432,11 @@ void Extrema_ExtCC::PrepareParallelResult(const Standard_Real theUt11, !isReversed ? theUt21 : theUt11, !isReversed ? theUt22 : theUt12); - if (!ExtPLin.IsDone()) + if (ExtPLin.IsDone()) + { + mySqDist.Append(theSqDist); + } + else { myIsParallel = Standard_False; } @@ -864,6 +868,8 @@ void Extrema_ExtCC::PrepareResults(const Extrema_ExtElC& AlgExt, (U2 >= Ut21 - RealEpsilon()) && (U2 <= Ut22 + RealEpsilon())) { Val = AlgExt.SquareDistance(i); + if (mypoints.IsEmpty()) + mySqDist.Clear(); mySqDist.Append(Val); if (!theIsInverse) { @@ -933,6 +939,8 @@ void Extrema_ExtCC::PrepareResults(const Extrema_ECC& AlgExt, (U2 >= Ut21 - RealEpsilon()) && (U2 <= Ut22 + RealEpsilon())) { + if(mypoints.IsEmpty()) + mySqDist.Clear(); Val = AlgExt.SquareDistance(i); mySqDist.Append(Val); P1.SetValues(U, P1.Value());