summaryrefslogtreecommitdiff
path: root/gs/base/gdevpdfi.c
diff options
context:
space:
mode:
Diffstat (limited to 'gs/base/gdevpdfi.c')
-rw-r--r--gs/base/gdevpdfi.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/gs/base/gdevpdfi.c b/gs/base/gdevpdfi.c
index 4b84ea4a6..4787e06a0 100644
--- a/gs/base/gdevpdfi.c
+++ b/gs/base/gdevpdfi.c
@@ -796,6 +796,16 @@ pdf_begin_typed_image_impl(gx_device_pdf *pdev, const gs_imager_state * pis,
&pie->writer.binary[1], &image[1].pixel,
pmat, pis, false, in_line);
if (code == gs_error_rangecheck) {
+
+ for (i=1;i < pie->writer.alt_writer_count; i++) {
+ stream *s = pie->writer.binary[i].strm;
+ cos_stream_t *pcos = cos_stream_from_pipeline(pie->writer.binary[i].strm);
+ s_close_filters(&s, NULL);
+// gs_free_object(pdev->pdf_memory, s->cbuf, "compressed image buffer");
+ gs_free_object(pdev->pdf_memory, s, "compressed image stream");
+ pcos->cos_procs->release((cos_object_t *)pcos, "pdf_begin_typed_image_impl");
+ gs_free_object(pdev->pdf_memory, pcos, "compressed image cos_stream");
+ }
/* setup_image_compression rejected the alternative compression. */
pie->writer.alt_writer_count = 1;
memset(pie->writer.binary + 1, 0, sizeof(pie->writer.binary[1]));