]> git.donarmstrong.com Git - lilypond.git/commitdiff
don't crash on NaNs in skyline and page-breaking
authorJoe Neeman <joeneeman@gmail.com>
Sat, 7 Jul 2007 01:25:50 +0000 (11:25 +1000)
committerJoe Neeman <joeneeman@gmail.com>
Sat, 7 Jul 2007 01:25:50 +0000 (11:25 +1000)
lily/constrained-breaking.cc
lily/skyline.cc

index 1cce9bd66eb34d1c87d9504fa54e526dae8b3f68..0838dea0319a2397a8fea5036446bee721ce7506 100644 (file)
@@ -372,7 +372,10 @@ Constrained_breaking::initialize ()
          line.turn_permission_ = min_permission (line.page_permission_,
                                                  line.turn_permission_);
 
-         line.extent_ = extent.is_empty () ? Interval (0, 0) : extent;
+         line.extent_ = (extent.is_empty ()
+                         || isnan (extent[LEFT])
+                         || isnan (extent[RIGHT]))
+           ? Interval (0, 0) : extent;
          line.padding_ = padding;
          line.space_ = space;
          line.inverse_hooke_ = extent.length () + space;
index c935660c6ed33b400cdf2b002fc0a79f886474ab..d6ccd83529adf96133b2739d7678f6d1a3baf91c 100644 (file)
@@ -419,6 +419,13 @@ Skyline::insert (Box const &b, Real horizon_padding, Axis a)
   list<Building> other_bld;
   list<Building> my_bld;
 
+  if (isnan (b[other_axis (a)][LEFT])
+      || isnan (b[other_axis (a)][RIGHT]))
+    {
+      programming_error ("insane box for skyline");
+      return;
+    }
+
   /* do the same filtering as in Skyline (vector<Box> const&, etc.) */
   Interval iv = b[a];
   iv.widen (horizon_padding);