From 769fb2e87faed46645d19564859648dbddb38589 Mon Sep 17 00:00:00 2001 From: Ben Pfaff Date: Thu, 1 Dec 2011 22:06:48 -0800 Subject: [PATCH] gui: Fix printing of tables split across pages in psppire-output-window. xr_driver_output_item() expects the caller to call xr_driver_next_page() as long as xr_driver_need_new_page() returns true, but the printing code didn't do that, so tables split across pages in printouts caused an assertion failure at the next call to xr_driver_output_item(). Reported-by: John Darrington --- src/ui/gui/psppire-output-window.c | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/src/ui/gui/psppire-output-window.c b/src/ui/gui/psppire-output-window.c index a0e74790..beb1e9a8 100644 --- a/src/ui/gui/psppire-output-window.c +++ b/src/ui/gui/psppire-output-window.c @@ -1003,7 +1003,7 @@ paginate (GtkPrintOperation *operation, if ( window->print_item < window->n_items ) { xr_driver_output_item (window->print_xrd, window->items[window->print_item++]); - if (xr_driver_need_new_page (window->print_xrd)) + while (xr_driver_need_new_page (window->print_xrd)) { xr_driver_next_page (window->print_xrd, NULL); window->print_n_pages ++; @@ -1046,12 +1046,9 @@ draw_page (GtkPrintOperation *operation, PsppireOutputWindow *window) { xr_driver_next_page (window->print_xrd, gtk_print_context_get_cairo_context (context)); - while ( window->print_item < window->n_items) - { - xr_driver_output_item (window->print_xrd, window->items [window->print_item++]); - if ( xr_driver_need_new_page (window->print_xrd) ) - break; - } + while (!xr_driver_need_new_page (window->print_xrd) + && window->print_item < window->n_items) + xr_driver_output_item (window->print_xrd, window->items [window->print_item++]); } -- 2.30.2