0027946: Out of range item access in offset algorithm
authoraml <aml@opencascade.com>
Mon, 10 Oct 2016 12:08:36 +0000 (15:08 +0300)
committerapn <apn@opencascade.com>
Thu, 13 Oct 2016 10:46:39 +0000 (13:46 +0300)
Out of range access has been eliminated.

src/BRepOffset/BRepOffset_Inter2d.cxx
tests/bugs/modalg_6/bug27907 [new file with mode: 0644]
tests/bugs/modalg_6/bug27907_1 [new file with mode: 0644]

index c559e96..016e09f 100644 (file)
@@ -1452,6 +1452,8 @@ void BRepOffset_Inter2d::ConnexIntByInt
     TopoDS_Shape aLocalWire = W .Oriented(TopAbs_FORWARD);
     TopoDS_Shape aLocalFace = FI.Oriented(TopAbs_FORWARD);
     wexp.Init(TopoDS::Wire(aLocalWire),TopoDS::Face(aLocalFace));
+    if (!wexp.More())
+      continue; // Protection from case when explorer does not contain edges.
 //    wexp.Init(TopoDS::Wire(W .Oriented(TopAbs_FORWARD)),
 //              TopoDS::Face(FI.Oriented(TopAbs_FORWARD)));
     CurE = FirstE  = wexp.Current(); 
diff --git a/tests/bugs/modalg_6/bug27907 b/tests/bugs/modalg_6/bug27907
new file mode 100644 (file)
index 0000000..e3f95b1
--- /dev/null
@@ -0,0 +1,17 @@
+puts "========"
+puts "OCC27907"
+puts "========"
+puts ""
+#################################################
+# Exception during offset computation
+#################################################
+
+restore [locate_data_file bug27907.brep] s
+
+# Perform test.
+offsetparameter 1e-7 p i
+offsetload s 10
+offsetperform result
+
+# Check result validity.
+checkshape result
diff --git a/tests/bugs/modalg_6/bug27907_1 b/tests/bugs/modalg_6/bug27907_1
new file mode 100644 (file)
index 0000000..23f1855
--- /dev/null
@@ -0,0 +1,17 @@
+puts "========"
+puts "OCC27907"
+puts "========"
+puts ""
+#################################################
+# Exception during offset computation
+#################################################
+
+restore [locate_data_file bug27907_1.brep] s
+
+# Perform test.
+offsetparameter 1e-7 p i
+offsetload s 10
+offsetperform result
+
+# Check result validity.
+checkshape result
\ No newline at end of file