0023131: Unhandled case in void CSLib::Normal(...)
authorabv <abv@opencascade.com>
Fri, 4 May 2012 08:18:10 +0000 (12:18 +0400)
committerabv <abv@opencascade.com>
Sat, 12 May 2012 11:48:18 +0000 (15:48 +0400)
Case of extrema failure is handled together with case of no solutions found.
Local variable Vsuiv is initialized by zero to avoid compiler warning.

src/CSLib/CSLib.cxx

index 5deb3c7..af66fce 100755 (executable)
@@ -303,7 +303,7 @@ void CSLib::Normal(const Standard_Integer MaxOrder,
            sup = M_PI;
         }
         Standard_Boolean CS=0;
-        Standard_Real Vprec=0,Vsuiv;
+        Standard_Real Vprec = 0., Vsuiv = 0.;
         //Creation of the polynom
         CSLib_NormalPolyDef  Poly(Order,Ratio);
         //Find zeros of SAPS
@@ -311,9 +311,7 @@ void CSLib::Normal(const Standard_Integer MaxOrder,
                                   Precision::Confusion(),
                                    Precision::Confusion());
         //If there are zeros
-        if(FindRoots.IsDone())
-        {
-           if(FindRoots.NbSolutions()>0)
+        if (FindRoots.IsDone() && FindRoots.NbSolutions() > 0)
            {
                //ranking by increasing order of roots of SAPS in Sol0
 
@@ -357,14 +355,14 @@ void CSLib::Normal(const Standard_Integer MaxOrder,
                    }
                }
             }
-            else
+         else
             {
                //SAPS has no root, so forcedly do not change the sign
                CS=Standard_False;
                Poly.Value(inf,Vsuiv);
             }
-            //fin if(MFR.NbSolutions()>0)
-         }//fin if(MFR>IsDone())
+         //fin if(MFR.IsDone() && MFR.NbSolutions()>0)
+
          if(CS)
          //Polynom changes the sign
             SP=0;