Revision: 52565
          http://brlcad.svn.sourceforge.net/brlcad/?rev=52565&view=rev
Author:   starseeker
Date:     2012-09-26 20:52:12 +0000 (Wed, 26 Sep 2012)
Log Message:
-----------
If we've got a singleton interval, don't try going deeper with it - leads to 
crashing.

Modified Paths:
--------------
    brlcad/trunk/src/libnurbs/opennurbs_ext.cpp

Modified: brlcad/trunk/src/libnurbs/opennurbs_ext.cpp
===================================================================
--- brlcad/trunk/src/libnurbs/opennurbs_ext.cpp 2012-09-26 20:51:15 UTC (rev 
52564)
+++ brlcad/trunk/src/libnurbs/opennurbs_ext.cpp 2012-09-26 20:52:12 UTC (rev 
52565)
@@ -225,7 +225,8 @@
                for (int knot_index = 1; knot_index <= knotcnt; knot_index++) {
                    ON_Interval range(knots[knot_index - 1], knots[knot_index]);
 
-                   getHVTangents(trimCurve, range, splitlist);
+                   if(!range.IsSingleton())
+                       getHVTangents(trimCurve, range, splitlist);
                }
                for (std::list<double>::iterator l = splitlist.begin(); l != 
splitlist.end(); l++) {
                    double xmax = *l;
@@ -476,8 +477,10 @@
            double midpoint = (t[1]+t[0])/2.0;
            ON_Interval left(t[0], midpoint);
            ON_Interval right(midpoint, t[1]);
-           getHVTangents(curve, left, list);
-           getHVTangents(curve, right, list);
+            if(!left.IsSingleton())
+               getHVTangents(curve, left, list);
+            if(!right.IsSingleton())
+               getHVTangents(curve, right, list);
            return true;
        } else if (tanx_changed) {//find horz
            double x = getVerticalTangent(curve, t[0], t[1]);
@@ -514,8 +517,10 @@
            double midpoint = (t[1]+t[0])/2.0;
            ON_Interval left(t[0], midpoint);
            ON_Interval right(midpoint, t[1]);
-           getHVTangents(curve, left, list);
-           getHVTangents(curve, right, list);
+           if(!left.IsSingleton())
+               getHVTangents(curve, left, list);
+           if(!right.IsSingleton())
+               getHVTangents(curve, right, list);
            return true;
        }
     }

This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.


------------------------------------------------------------------------------
How fast is your code?
3 out of 4 devs don\\\'t know how their code performs in production.
Find out how slow your code is with AppDynamics Lite.
http://ad.doubleclick.net/clk;262219672;13503038;z?
http://info.appdynamics.com/FreeJavaPerformanceDownload.html
_______________________________________________
BRL-CAD Source Commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/brlcad-commits

Reply via email to