From 5d43bcdb7edc50afcb5a8600bd5b23e5f1cfc6cd Mon Sep 17 00:00:00 2001
From: Joe Neeman <joeneeman@gmail.com>
Date: Sun, 4 Feb 2007 18:21:16 +0200
Subject: [PATCH] Prevent empty systems from crashing the page-breaker. Fixes
 #276

---
 lily/constrained-breaking.cc | 4 +---
 lily/page-spacing.cc         | 8 ++++----
 2 files changed, 5 insertions(+), 7 deletions(-)

diff --git a/lily/constrained-breaking.cc b/lily/constrained-breaking.cc
index c688be6a1b..d8235760ac 100644
--- a/lily/constrained-breaking.cc
+++ b/lily/constrained-breaking.cc
@@ -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;
diff --git a/lily/page-spacing.cc b/lily/page-spacing.cc
index 7803cc06f2..9b2ec33615 100644
--- a/lily/page-spacing.cc
+++ b/lily/page-spacing.cc
@@ -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 ();
 }
-- 
2.39.5