summaryrefslogtreecommitdiff
path: root/base/gdevprn.c
diff options
context:
space:
mode:
Diffstat (limited to 'base/gdevprn.c')
-rw-r--r--base/gdevprn.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/base/gdevprn.c b/base/gdevprn.c
index 0cfb453fc..41ce670f8 100644
--- a/base/gdevprn.c
+++ b/base/gdevprn.c
@@ -1414,8 +1414,16 @@ gx_default_create_buf_device(gx_device **pbdev, gx_device *target, int y,
#endif
gx_device_fill_in_procs((gx_device *)mdev);
} else {
- gs_make_mem_device(mdev, mdproto, mem, (color_usage == NULL ? 1 : 0),
- target);
+ gs_devn_params* pdevn_params;
+
+ gs_make_mem_device(mdev, mdproto, mem, (color_usage == NULL ? 1 : 0), target);
+ /* mem devices may need to refer to the target's devn_params struct */
+ /* if the device has separations already defined (by SeparationOrderNames), we */
+ /* need to use them so the colorants are in the same order as the target device. */
+ pdevn_params = dev_proc(target, ret_devn_params)(target);
+ if (pdevn_params != NULL) {
+ mdev->procs.ret_devn_params = gx_forward_ret_devn_params;
+ }
}
mdev->width = target->width;
mdev->band_y = y;