summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSebastian Rasmussen <sebras@gmail.com>2018-02-02 21:45:35 +0100
committerSebastian Rasmussen <sebras@gmail.com>2018-02-06 03:07:10 +0100
commitbeeb48ca77f63bf47ddb3c5d7db44e3c4d10b357 (patch)
treea22ea01b42181d5444c13bb028e2c32b8d2d294b
parent71b2647252d0989995f66cb17e6ed399466f03ce (diff)
downloadmupdf-beeb48ca77f63bf47ddb3c5d7db44e3c4d10b357.tar.xz
Make sure to drop colorspace upon exception drawing contents.
-rw-r--r--source/pdf/pdf-run.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/source/pdf/pdf-run.c b/source/pdf/pdf-run.c
index 1436e93a..22ee32c7 100644
--- a/source/pdf/pdf-run.c
+++ b/source/pdf/pdf-run.c
@@ -42,8 +42,10 @@ pdf_run_page_contents_with_usage(fz_context *ctx, pdf_document *doc, pdf_page *p
fz_rect mediabox;
pdf_processor *proc = NULL;
fz_default_colorspaces *default_cs;
+ fz_colorspace *colorspace = NULL;
fz_var(proc);
+ fz_var(colorspace);
default_cs = pdf_load_default_colorspaces(ctx, doc, page);
if (default_cs)
@@ -57,9 +59,9 @@ pdf_run_page_contents_with_usage(fz_context *ctx, pdf_document *doc, pdf_page *p
resources = pdf_page_resources(ctx, page);
contents = pdf_page_contents(ctx, page);
+
if (page->transparency)
{
- fz_colorspace *colorspace = NULL;
pdf_obj *group = pdf_page_group(ctx, page);
if (group)
@@ -78,6 +80,7 @@ pdf_run_page_contents_with_usage(fz_context *ctx, pdf_document *doc, pdf_page *p
fz_begin_group(ctx, dev, fz_transform_rect(&mediabox, &local_ctm), colorspace, 1, 0, 0, 1);
fz_drop_colorspace(ctx, colorspace);
+ colorspace = NULL;
}
proc = pdf_new_run_processor(ctx, dev, &local_ctm, usage, NULL, 0, default_cs);
@@ -90,7 +93,10 @@ pdf_run_page_contents_with_usage(fz_context *ctx, pdf_document *doc, pdf_page *p
pdf_drop_processor(ctx, proc);
}
fz_catch(ctx)
+ {
+ fz_drop_colorspace(ctx, colorspace);
fz_rethrow(ctx);
+ }
if (page->transparency)
fz_end_group(ctx, dev);