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 <john@darrington.wattle.id.au>
if ( window->print_item < window->n_items )
{
xr_driver_output_item (window->print_xrd, window->items[window->print_item++]);
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 ++;
{
xr_driver_next_page (window->print_xrd, NULL);
window->print_n_pages ++;
PsppireOutputWindow *window)
{
xr_driver_next_page (window->print_xrd, gtk_print_context_get_cairo_context (context));
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++]);