0027194: Possible division by zero in IntPatch_WLineTool
authoraml <aml@opencascade.com>
Sat, 20 Feb 2016 08:54:44 +0000 (11:54 +0300)
committerbugmaster <bugmaster@opencascade.com>
Thu, 19 May 2016 12:04:28 +0000 (15:04 +0300)
Correct handling for division by zero is added. This prevents exception when FPE is enabled

src/IntPatch/IntPatch_WLineTool.cxx

index e6080a3..1b823b6 100644 (file)
@@ -379,9 +379,10 @@ static Handle(IntPatch_WLine)
       Standard_Real aStepOnS1 = aPntOnS1[0].SquareModulus() / aPntOnS1[1].SquareModulus();
       Standard_Real aStepOnS2 = aPntOnS2[0].SquareModulus() / aPntOnS2[1].SquareModulus();
 
-      Standard_Real aStepCoeff = Min(aStepOnS1, aStepOnS2) / Max(aStepOnS1, aStepOnS2);
-
-      if (aStepCoeff > aLimitCoeff)
+      // Check very rare case when wline fluctuates nearly one point and some of them may be equal.
+      // Middle point will be deleted when such situation occurs.
+      // bugs moddata_2 bug469.
+      if (Min(aStepOnS1, aStepOnS2) >= aLimitCoeff * Max(aStepOnS1, aStepOnS2))
       {
         // Set hash flag to "Delete" state.
         isDeleteState = Standard_True;