]> git.donarmstrong.com Git - lilypond.git/commitdiff
Prevent empty systems from crashing the page-breaker. Fixes #276
authorJoe Neeman <joeneeman@gmail.com>
Sun, 4 Feb 2007 16:21:16 +0000 (18:21 +0200)
committerJoe Neeman <joeneeman@gmail.com>
Sun, 4 Feb 2007 16:21:16 +0000 (18:21 +0200)
lily/constrained-breaking.cc
lily/page-spacing.cc

index c688be6a1b54237b859f52375f086e9e9275da07..d8235760ac08978fb469e6805d22bc31ea1b91a2 100644 (file)
@@ -342,7 +342,6 @@ Constrained_breaking::initialize ()
                                         ragged_right_);
   for (vsize i = 0; i + 1 < breaks_.size (); i++)
     {
-      Real max_ext = 0;
       for (vsize j = i + 1; j < breaks_.size (); j++)
        {
          int start = Paper_column::get_rank (all_[breaks_[i]]);
@@ -373,8 +372,7 @@ Constrained_breaking::initialize ()
          line.turn_permission_ = min_permission (line.page_permission_,
                                                  line.turn_permission_);
 
-         max_ext = max (max_ext, extent.length ());
-         line.extent_ = extent;
+         line.extent_ = extent.is_empty () ? Interval (0, 0) : extent;
          line.padding_ = padding;
          line.space_ = space;
          line.inverse_hooke_ = extent.length () + space;
index 7803cc06f23034f87e31ea2910b12391ff758ae6..9b2ec336159b74ecd8170dd783cf5ffb8862034f 100644 (file)
@@ -53,8 +53,8 @@ Page_spacing::append_system (const Line_details &line)
   rod_height_ += last_line_.padding_;
 
   rod_height_ += line.extent_.length ();
-  spring_len_ += line.space_;
-  inverse_spring_k_ += line.inverse_hooke_;
+  spring_len_ += max (0.1, line.space_);
+  inverse_spring_k_ += max (0.1, line.inverse_hooke_);
 
   last_line_ = line;
 
@@ -70,8 +70,8 @@ Page_spacing::prepend_system (const Line_details &line)
     last_line_ = line;
 
   rod_height_ += line.extent_.length ();
-  spring_len_ += line.space_;
-  inverse_spring_k_ += line.inverse_hooke_;
+  spring_len_ += max (0.1, line.space_);
+  inverse_spring_k_ += max (0.1, line.inverse_hooke_);
 
   calc_force ();
 }