0026929: Extrema_ECC hang/crash
authormsv <msv@opencascade.com>
Sat, 26 Mar 2016 17:42:49 +0000 (20:42 +0300)
committerbugmaster <bugmaster@opencascade.com>
Tue, 29 Mar 2016 12:52:43 +0000 (15:52 +0300)
Comparator functor corrected to return false in the case of equal elements.
Test case added.

src/Extrema/Extrema_GenExtCC.gxx
tests/bugs/modalg_6/bug26929 [new file with mode: 0644]

index 3b564f4..a308676 100644 (file)
@@ -38,7 +38,7 @@ static Standard_Boolean comp(const gp_XY& theA,
   {
     if (theA.X() == theB.X())
     {
-      if (theA.Y() <= theB.Y())
+      if (theA.Y() < theB.Y())
         return Standard_True;
     }
   }
diff --git a/tests/bugs/modalg_6/bug26929 b/tests/bugs/modalg_6/bug26929
new file mode 100644 (file)
index 0000000..b89413a
--- /dev/null
@@ -0,0 +1,40 @@
+puts "============"
+puts "OCC26929"
+puts "============"
+puts ""
+#############################################################################################
+## Extrema_ECC hang/crash in ShapeSplitter
+#############################################################################################
+cpulimit 100
+
+restore [locate_data_file OCC26629-face.brep] aF
+restore [locate_data_file OCC26629-edge.brep] aE
+
+pload MODELING
+
+# Hang check.
+dchrono cr reset
+dchrono cr start
+
+set ss ""
+foreach s [explode aE e] {set ss "$ss aF $s"}
+eval splitshape result aF $ss
+
+dchrono cr stop
+
+set max_time 20.0
+set log [dchrono cr show]
+regexp {CPU user time: ([-0-9.+eE]+) seconds} $log full z
+
+
+if { $z > ${max_time} } {
+    puts "Elapsed time of BRepFeat_SplitShape is more than ${max_time} seconds - Error"
+} else {
+    puts "Elapsed time of BRepFeat_SplitShape is less than ${max_time} seconds - OK"
+}
+
+# Check result validity.
+checkshape result
+
+# Visual check.
+set 2dviewer 1
\ No newline at end of file