diff options
author | Sebastian Rasmussen <sebras@gmail.com> | 2018-09-25 19:05:10 +0800 |
---|---|---|
committer | Sebastian Rasmussen <sebras@gmail.com> | 2018-10-12 15:50:49 +0800 |
commit | 26b29d966ff7a72b5617163298d029c575062f36 (patch) | |
tree | 787b5dc6ad8d944920a46d62ec100ee4d4602571 /source | |
parent | ff4e6743ccaafdec4ade233a048cc198702d816e (diff) | |
download | mupdf-26b29d966ff7a72b5617163298d029c575062f36.tar.xz |
Drop default colorspaces upon exception.
Diffstat (limited to 'source')
-rw-r--r-- | source/pdf/pdf-page.c | 23 |
1 files changed, 16 insertions, 7 deletions
diff --git a/source/pdf/pdf-page.c b/source/pdf/pdf-page.c index ba080340..e4b143dc 100644 --- a/source/pdf/pdf-page.c +++ b/source/pdf/pdf-page.c @@ -986,14 +986,23 @@ pdf_load_default_colorspaces(fz_context *ctx, pdf_document *doc, pdf_page *page) fz_colorspace *oi; default_cs = fz_new_default_colorspaces(ctx); - res = pdf_page_resources(ctx, page); - obj = pdf_dict_get(ctx, res, PDF_NAME(ColorSpace)); - if (obj) - pdf_load_default_colorspaces_imp(ctx, default_cs, obj); - oi = pdf_document_output_intent(ctx, doc); - if (oi) - fz_set_default_output_intent(ctx, default_cs, oi); + fz_try(ctx) + { + res = pdf_page_resources(ctx, page); + obj = pdf_dict_get(ctx, res, PDF_NAME(ColorSpace)); + if (obj) + pdf_load_default_colorspaces_imp(ctx, default_cs, obj); + + oi = pdf_document_output_intent(ctx, doc); + if (oi) + fz_set_default_output_intent(ctx, default_cs, oi); + } + fz_catch(ctx) + { + fz_drop_default_colorspaces(ctx, default_cs); + fz_rethrow(ctx); + } return default_cs; } |