From 26b29d966ff7a72b5617163298d029c575062f36 Mon Sep 17 00:00:00 2001 From: Sebastian Rasmussen Date: Tue, 25 Sep 2018 19:05:10 +0800 Subject: Drop default colorspaces upon exception. --- source/pdf/pdf-page.c | 23 ++++++++++++++++------- 1 file 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; } -- cgit v1.2.3