summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'devices/vector/gdevpdfi.c')
-rw-r--r--devices/vector/gdevpdfi.c15
1 files changed, 8 insertions, 7 deletions
diff --git a/devices/vector/gdevpdfi.c b/devices/vector/gdevpdfi.c
index 1e1a9daa..1de48cee 100644
--- a/devices/vector/gdevpdfi.c
+++ b/devices/vector/gdevpdfi.c
@@ -1872,7 +1872,7 @@ use_image_as_pattern(gx_device_pdf *pdev, pdf_resource_t *pres1,
}
if (code >= 0)
code = (*dev_proc(pdev, dev_spec_op))((gx_device *)pdev,
- gxdso_pattern_load, &inst, id);
+ gxdso_pattern_load, &id, sizeof(gs_id));
if (code >= 0) {
stream_puts(pdev->strm, "q ");
code = pdf_cs_Pattern_colored(pdev, &v);
@@ -2032,7 +2032,7 @@ pdf_image_end_image(gx_image_enum_common_t * info, bool draw_last)
static int
pdf_image_end_image_cvd(gx_image_enum_common_t * info, bool draw_last)
{ pdf_lcvd_t *cvd = (pdf_lcvd_t *)info->dev;
- int code = pdf_dump_converted_image(cvd->pdev, cvd);
+ int code = pdf_dump_converted_image(cvd->pdev, cvd, 0);
int code1 = gx_image1_end_image(info, draw_last);
int code2 = gs_closedevice((gx_device *)cvd->mask);
int code3 = gs_closedevice((gx_device *)cvd);
@@ -2214,8 +2214,10 @@ pdf_image3x_make_mcde(gx_device *dev, const gs_gstate *pgs,
code = pdf_begin_typed_image
((gx_device_pdf *)dev, pgs, pmat, pic, prect, pdcolor, pcpath, mem,
pinfo, PDF_IMAGE_TYPE3_DATA);
- if (code < 0)
+ if (code < 0) {
+ rc_decrement(*pmcdev, "pdf_image3x_make_mcde");
return code;
+ }
if ((*pinfo)->procs != &pdf_image_enum_procs) {
/* We couldn't handle the image. Bail out. */
gx_image_end(*pinfo, false);
@@ -2695,7 +2697,6 @@ gdev_pdf_dev_spec_op(gx_device *pdev1, int dev_spec_op, void *data, int size)
gs_pattern1_instance_t *pinst = param->pinst;
gs_gstate *pgs = param->graphics_state;
- id = param->pinst_id;
code = pdf_check_soft_mask(pdev, (gs_gstate *)pgs);
if (code < 0)
return code;
@@ -2735,7 +2736,7 @@ gdev_pdf_dev_spec_op(gx_device *pdev1, int dev_spec_op, void *data, int size)
memset(pdev->initial_pattern_states[pdev->PatternDepth], 0x00, sizeof(gs_gstate));
reset_gstate_for_pattern(pdev, pdev->initial_pattern_states[pdev->PatternDepth], pgs);
- code = pdf_enter_substream(pdev, resourcePattern, id, &pres, false,
+ code = pdf_enter_substream(pdev, resourcePattern, pinst->id, &pres, false,
pdev->CompressStreams);
if (code < 0) {
gs_free_object(pdev->pdf_memory->non_gc_memory, pdev->initial_pattern_states[pdev->PatternDepth], "Freeing dangling pattern state");
@@ -2751,7 +2752,7 @@ gdev_pdf_dev_spec_op(gx_device *pdev1, int dev_spec_op, void *data, int size)
* the ID is restored when we finish capturing the pattern.
*/
pdev->state.soft_mask_id = pgs->soft_mask_id;
- pres->rid = id;
+ pres->rid = pinst->id;
code = pdf_store_pattern1_params(pdev, pres, pinst);
if (code < 0) {
gs_free_object(pdev->pdf_memory->non_gc_memory, pdev->initial_pattern_states[pdev->PatternDepth], "Freeing dangling pattern state");
@@ -2830,7 +2831,7 @@ gdev_pdf_dev_spec_op(gx_device *pdev1, int dev_spec_op, void *data, int size)
}
return 1;
case gxdso_pattern_load:
- pres = pdf_find_resource_by_gs_id(pdev, resourcePattern, id);
+ pres = pdf_find_resource_by_gs_id(pdev, resourcePattern, *((gx_bitmap_id *)data));
if (pres == 0)
return 0;
pres = pdf_substitute_pattern(pres);