[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
mailing list