summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobin Watts <robin.watts@artifex.com>2018-11-01 08:53:01 +0000
committerChris Liddell <chris.liddell@artifex.com>2018-11-06 08:26:58 +0000
commit3861d11cf54f66b0b87178a2fce5d598ab58796e (patch)
tree9d2c82934b53cfedc96e4f5215447dfdf1d6938e
parenta51f172c7785c36dbe530ebcb528d001bb3a4e42 (diff)
downloadghostpdl-3861d11cf54f66b0b87178a2fce5d598ab58796e.tar.gz
Avoid trampling on dev_spec_op when opening printer device.
-rw-r--r--base/gdevprn.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/base/gdevprn.c b/base/gdevprn.c
index dcdfc7242..56e61f829 100644
--- a/base/gdevprn.c
+++ b/base/gdevprn.c
@@ -1466,8 +1466,11 @@ gx_default_create_buf_device(gx_device **pbdev, gx_device *target, int y,
mdev = (gx_device_memory *)*pbdev;
}
if (target == (gx_device *)mdev) {
+ dev_t_proc_dev_spec_op((*orig_dso), gx_device) = dev_proc(mdev, dev_spec_op);
/* The following is a special hack for setting up printer devices. */
assign_dev_procs(mdev, mdproto);
+ /* Do not override the dev_spec_op! */
+ dev_proc(mdev, dev_spec_op) = orig_dso;
check_device_separable((gx_device *)mdev);
/* In order for saved-pages to work, we need to hook the dev_spec_op */
if (mdev->procs.dev_spec_op == NULL)