0025810: Exception in extrema operation.
authoraml <aml@opencascade.com>
Thu, 12 Feb 2015 09:04:55 +0000 (12:04 +0300)
committerbugmaster <bugmaster@opencascade.com>
Thu, 12 Feb 2015 09:05:44 +0000 (12:05 +0300)
Fixed computation of number of analytic intersection points.

Test case for issue CR25810

src/Extrema/Extrema_ExtElCS.cxx
tests/bugs/moddata_3/bug25810 [new file with mode: 0644]

index 6eaac11..96384d0 100644 (file)
@@ -361,9 +361,9 @@ void Extrema_ExtElCS::Perform(const gp_Circ& C,
       // Check whether two objects have intersection points
       IntAna_Quadric aCylQuad(S);
       IntAna_IntConicQuad aCircCylInter(C, aCylQuad);
-      Standard_Integer aNbInter = aCircCylInter.NbPoints();
-      if (!aCircCylInter.IsDone())
-        aNbInter = 0;
+      Standard_Integer aNbInter = 0;
+      if (aCircCylInter.IsDone())
+        aNbInter = aCircCylInter.NbPoints();
 
       // Compute the extremas.
       myNbExt  =     2*aNbExt + aNbInter;
diff --git a/tests/bugs/moddata_3/bug25810 b/tests/bugs/moddata_3/bug25810
new file mode 100644 (file)
index 0000000..55ffa80
--- /dev/null
@@ -0,0 +1,15 @@
+puts "============"
+puts "OCC25810"
+puts "============"
+puts ""
+#######################################################################
+# Exception in extrema operation.
+#######################################################################
+
+restore [locate_data_file bug25810_e1.brep] b1
+restore [locate_data_file bug25810_f1.brep] b2
+
+mkcurve c1 b1
+mksurface s2 b2
+
+extrema c1 s2