diff --git a/lily/page-breaking.cc b/lily/page-breaking.cc index 0d88338..bd93199 100644 --- a/lily/page-breaking.cc +++ b/lily/page-breaking.cc @@ -663,38 +663,23 @@ Page_breaking::space_systems_on_n_or_one_more_pages (vsize configuration, vsize { Page_spacing_result n_res; Page_spacing_result m_res; + Page_spacing_result ret; - if (n <= 2) - { - n_res = space_systems_on_n_pages (configuration, n, first_page_num); - m_res = space_systems_on_n_pages (configuration, n+1, first_page_num); - } - else - { - cache_line_details (configuration); + cache_line_details (configuration); - vsize min_p_count = min_page_count (configuration, first_page_num); - Page_spacer ps (cached_line_details_, first_page_num, this); - if (n >= min_p_count) - { - n_res = ps.solve (n); - uncompress_page_spacing_results (&n_res); - } - if (n < cached_line_details_.size ()) - { - m_res = ps.solve (n+1); - uncompress_page_spacing_results (&m_res); - } - - } + vsize min_p_count = min_page_count (configuration, first_page_num); + Page_spacer ps (cached_line_details_, first_page_num, this); + if (n >= min_p_count) + n_res = ps.solve (n); + if (n < cached_line_details_.size ()) + m_res = ps.solve (n+1); Real penalty = blank_page_penalty (); n_res.demerits_ += penalty; n_res.force_.back () += penalty; - if (m_res.demerits_ < n_res.demerits_) - return m_res; - return n_res; + ret = (m_res.demerits_ < n_res.demerits_) ? m_res : n_res; + return finalize_spacing_result (ret); } Page_spacing_result