0028118: Mesh generation hangs then crashes
authorgka <gka@opencascade.com>
Wed, 23 Nov 2016 16:31:02 +0000 (19:31 +0300)
committerabv <abv@opencascade.com>
Thu, 24 Nov 2016 04:06:49 +0000 (07:06 +0300)
Protection against hangs of mesh  and crash(made by epa)
Added test case bugs/mesh/bug28118
Tests mesh* standard_* W7 are corrected (TODO removed)

src/BRepMesh/BRepMesh_EdgeTessellator.cxx
tests/bugs/mesh/bug28118 [new file with mode: 0644]
tests/mesh/data/standard/W7

index 3ff00f8..0daa350 100644 (file)
@@ -79,7 +79,7 @@ BRepMesh_EdgeTessellator::BRepMesh_EdgeTessellator(
   {
     // bug24220
     const Standard_Integer aNbInt = myCOnS.NbIntervals(GeomAbs_C1);
-    if ( aNbInt > 0 )
+    if ( aNbInt > 1 )
     {
       TColStd_Array1OfReal anIntervals( 1, aNbInt + 1 );
       myCOnS.Intervals(anIntervals, GeomAbs_C1);
diff --git a/tests/bugs/mesh/bug28118 b/tests/bugs/mesh/bug28118
new file mode 100644 (file)
index 0000000..fe38d2c
--- /dev/null
@@ -0,0 +1,27 @@
+puts "========"
+puts "OCC28118"
+puts "========"
+puts ""
+###########################################
+# Mesh generation hangs then crashes
+###########################################
+
+testreadstep [locate_data_file bug28118_18547.stp] result
+vclear
+vinit View1
+vdefaults -autoTriang off
+vdisplay result
+vfit
+incmesh result 0.1 -relative
+vsetdispmode 1
+set tri_info [trinfo result]
+
+regexp { +([-0-9.+eE]+) +triangles} $tri_info full tri
+regexp { +([-0-9.+eE]+) +nodes} $tri_info full nod
+
+if { $tri > 0 && $nod > 0 } {
+  puts "OK: mesh was created correctly"
+} else {
+  puts "Error: mesh was not built"
+
+checkview -screenshot -3d -path ${imagedir}/${test_image}.png
index c760ae6..c3a0501 100755 (executable)
@@ -1,14 +1,11 @@
 set TheFileName shading_wrongshape_027.brep
 set bug_freenodes "OCC22687"
 set nbfreenodes(All) 6
-set max_rel_tol_diff 1
 if { [string compare $command "shading"] != 0 } {
   #set bug_area "OCC22687"
+  set max_rel_tol_diff 1
   set rel_tol 1.2
 } else {
-  set rel_tol 1.1
-  set nbfree(All) 2
-  set bug_freelinks "OCC22687"
+  set max_rel_tol_diff 0.01
+  set rel_tol 0.052351028422287886
 }
-set nbcross(All) 2
-set bug_cross "OCC23184"