]> OCCT Git - occt.git/commitdiff
0024909: Modeling Algorithms - SIGSEGV in buildsweep CR24909
authorakondrat <alexey.kondratyev@opencascade.com>
Wed, 10 Aug 2022 10:45:58 +0000 (13:45 +0300)
committerakondrat <alexey.kondratyev@opencascade.com>
Thu, 18 Aug 2022 05:27:03 +0000 (08:27 +0300)
Update algorithm.

src/Extrema/Extrema_ExtCC.cxx

index 0466dc2ec17c41596d5a04b8421d7989be2e678c..dace735cdf4fbc8d17eb99d2ca7fba0e7e8c4610 100644 (file)
@@ -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());