summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSebastian Rasmussen <sebras@gmail.com>2018-09-25 19:05:10 +0800
committerSebastian Rasmussen <sebras@gmail.com>2018-10-12 15:50:49 +0800
commit26b29d966ff7a72b5617163298d029c575062f36 (patch)
tree787b5dc6ad8d944920a46d62ec100ee4d4602571
parentff4e6743ccaafdec4ade233a048cc198702d816e (diff)
downloadmupdf-26b29d966ff7a72b5617163298d029c575062f36.tar.xz
Drop default colorspaces upon exception.
-rw-r--r--source/pdf/pdf-page.c23
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;
}