diff options
author | Sebastian Rasmussen <sebras@gmail.com> | 2018-02-02 21:45:35 +0100 |
---|---|---|
committer | Sebastian Rasmussen <sebras@gmail.com> | 2018-02-06 03:07:10 +0100 |
commit | beeb48ca77f63bf47ddb3c5d7db44e3c4d10b357 (patch) | |
tree | a22ea01b42181d5444c13bb028e2c32b8d2d294b /source | |
parent | 71b2647252d0989995f66cb17e6ed399466f03ce (diff) | |
download | mupdf-beeb48ca77f63bf47ddb3c5d7db44e3c4d10b357.tar.xz |
Make sure to drop colorspace upon exception drawing contents.
Diffstat (limited to 'source')
-rw-r--r-- | source/pdf/pdf-run.c | 8 |
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); |