X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Foptimal-page-breaking.cc;h=5ad4daf9bf8ecf71c68df84e04eee3b424033b6a;hb=9e781b7dc83b60a543ce218aa1a5f139f74c760f;hp=2b0910f8873600feebf136424c8ffa823d0f93d6;hpb=233fb6a8b3b6e31de1841641dbbd4c4f43423151;p=lilypond.git diff --git a/lily/optimal-page-breaking.cc b/lily/optimal-page-breaking.cc index 2b0910f887..5ad4daf9bf 100644 --- a/lily/optimal-page-breaking.cc +++ b/lily/optimal-page-breaking.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2006--2012 Joe Neeman + Copyright (C) 2006--2014 Joe Neeman LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -64,12 +64,21 @@ Optimal_page_breaking::solve () best = space_systems_on_best_pages (0, first_page_num); page_count = best.systems_per_page_.size (); - min_sys_count = ideal_sys_count - best.systems_per_page_.back (); + if (page_count == 0) + { + min_sys_count = 0; + } + else + { + min_sys_count = ideal_sys_count - best.systems_per_page_.back (); - if (page_count > 1 && best.systems_per_page_[page_count - 2] > 1) - min_sys_count -= best.systems_per_page_[page_count - 2]; + if (page_count > 1 && best.systems_per_page_[page_count - 2] > 1) + min_sys_count -= best.systems_per_page_[page_count - 2]; - min_sys_count = max (min_sys_count, (vsize)1); + if (min_sys_count > ideal_sys_count // subtraction wrapped around + || min_sys_count <= 0) + min_sys_count = 1; + } } else { @@ -103,7 +112,7 @@ Optimal_page_breaking::solve () if (page_count == 1) message (_ ("Fitting music on 1 page...")); - else if (scm_is_integer (forced_page_count)) + else if (scm_is_integer (forced_page_count) || page_count == 0) message (_f ("Fitting music on %d pages...", (int)page_count)); else message (_f ("Fitting music on %d or %d pages...", (int)page_count - 1, (int)page_count));