[cups.bugs] [MOD] STR #1577: bjc600's gs_closedevice breaks get_page_device and causes NumCopies to barf

Ian Jackson iwj at ubuntu.com
Thu Apr 20 14:41:02 PDT 2006


[STR New]

In gs-esp 8.15.1, the following PostScript file
 <<
 /NumCopies 1
 /Policies <<
 /PolicyNotFound 1
 >>
 >> setpagedevice
fed to the following rune
 gs-esp -q -dBATCH -dPARANOIDSAFER -dQUIET -dNOPAUSE -sDEVICE=bjc600
-dBitsPerPixel=24 -dProcessColorModel=/DeviceCMYK -sOutputFile=t bad.ps
causes this error
 Error: /undefined in --setpagedevice--

This is because:
 gx_default_put_params checks whether get_page_device works, before
attempting to process the NumCopies pagedevice setting
 gdevcdj uses gdevprn and all prn devices are page devices so
get_page_device should be gx_page_device_get_page_device, and indeed
gdevprn sets it like that
but
 cdj_set_bpp calls gs_closedevice which calls gdev_prn_tear_down which
restores a set of procs including gx_default_get_page_device so that the
check fails.

This causes gx_default_put_params not to read the NumCopies parameter, so
that it is left unread, and then an error is later issued by
ref_param_read_commit because the relevants ->results[] entry is still
zero.

I don't know whether the bug is:
 * that iplist->u.r.require_all is set on entry to ref_param_read_commit
 * that cdj_set_bpp calls gs_closedevice
 * that gdev_prn_tear_down restores the procedures
 * the check in gx_default_put_params

This bug was reported by an Ubuntu user in our bug system, at
 https://launchpad.net/distros/ubuntu/+source/gs-esp/+bug/38060

I need to decide what to do about this for our release.  It causes some
files not to be printable on bjc600's.  As a straightforward change which
will probably have relatively low and benign impact, unless I hear
otherwise in time I will probably arrange for our forthcoming release's
gs-esp's gx_default_put_params to always read the NumCopies parameter.

Thanks for your attention.

Link: http://www.cups.org/str.php?L1577
Version: 8.15.1





More information about the cups-devel mailing list