0026281: BRepCheck_Edge::Tolerance() raises exception on the given shapes
authornbv <nbv@opencascade.com>
Thu, 4 Jun 2015 11:01:53 +0000 (14:01 +0300)
committerbugmaster <bugmaster@opencascade.com>
Thu, 4 Jun 2015 11:03:08 +0000 (14:03 +0300)
The reason of the exception has been eliminated

Test-cases for issue #26281

src/BSplCLib/BSplCLib.cxx
src/BSplSLib/BSplSLib.cxx
tests/bugs/modalg_6/bug26281_1 [new file with mode: 0644]
tests/bugs/modalg_6/bug26281_2 [new file with mode: 0644]

index c87c5b7..e8cb3c5 100644 (file)
@@ -275,6 +275,10 @@ void BSplCLib::LocateParameter
 
     while (val <= Eps) {
       KnotIndex++;
+
+      if(KnotIndex >= Knots.Upper())
+        break;
+
       K1 = K2;
       K2 = knots[KnotIndex + 1];
       val = K2 - K1;
index 813d6ae..46d43bc 100644 (file)
@@ -570,6 +570,9 @@ static Standard_Boolean  PrepareEval (const Standard_Real            U,
         if(ip < PLowerRow)
           ip = PUpperRow;
 
+        if(ip > PUpperRow)
+          ip = PLowerRow;
+
         for (j = 0; j <= d2; j++)
           {
           const gp_Pnt& P = Poles.Value(ip,jp);
diff --git a/tests/bugs/modalg_6/bug26281_1 b/tests/bugs/modalg_6/bug26281_1
new file mode 100644 (file)
index 0000000..5e9a2ec
--- /dev/null
@@ -0,0 +1,10 @@
+puts "========"
+puts "OCC26281"
+puts "========"
+puts ""
+####################################################################
+# BRepCheck_Edge::Tolerance() raises exception on the given shapes
+####################################################################
+
+restore [locate_data_file OCC26281_a_6055.brep] a
+computetolerance a
diff --git a/tests/bugs/modalg_6/bug26281_2 b/tests/bugs/modalg_6/bug26281_2
new file mode 100644 (file)
index 0000000..0eab224
--- /dev/null
@@ -0,0 +1,10 @@
+puts "========"
+puts "OCC26281"
+puts "========"
+puts ""
+####################################################################
+# BRepCheck_Edge::Tolerance() raises exception on the given shapes
+####################################################################
+
+restore [locate_data_file OCC26281_a_6213.brep] a
+computetolerance a