When the page-turn-breaker is running, the page breaking
routines can be called on subsets of the book. Ensure that
the special handling for the last page is only invoked for
the last page of a book, not just the last page of a subset.
calculations that treated it as a non-last page were ok.
*/
calculations that treated it as a non-last page were ok.
*/
- cur_page_height = page_height (first_page_num + ret - 1, true);
- cur_page_height -= min_whitespace_at_top_of_page (cached_line_details_[page_starter]);
- cur_page_height -= min_whitespace_at_bottom_of_page (cached_line_details_.back ());
-
- Real cur_height = cur_rod_height + ((ragged_last () || ragged ()) ? cur_spring_height : 0);
- if (!too_few_lines (line_count - cached_line_details_.back ().compressed_nontitle_lines_count_)
- && cur_height > cur_page_height
- /* don't increase the page count if the last page had only one system */
- && cur_rod_height > cached_line_details_.back ().full_height ())
- ret++;
-
- assert (ret <= cached_line_details_.size ());
+ if (is_last ())
+ {
+ cur_page_height = page_height (first_page_num + ret - 1, true);
+ cur_page_height -= min_whitespace_at_top_of_page (cached_line_details_[page_starter]);
+ cur_page_height -= min_whitespace_at_bottom_of_page (cached_line_details_.back ());
+
+ Real cur_height = cur_rod_height + ((ragged_last () || ragged ()) ? cur_spring_height : 0);
+ if (!too_few_lines (line_count - cached_line_details_.back ().compressed_nontitle_lines_count_)
+ && cur_height > cur_page_height
+ /* don't increase the page count if the last page had only one system */
+ && cur_rod_height > cached_line_details_.back ().full_height ())
+ ret++;
+ assert (ret <= cached_line_details_.size ());
+ }
+