diff options
author | Sebastian Rasmussen <sebras@gmail.com> | 2018-10-03 13:54:57 +0800 |
---|---|---|
committer | Tor Andersson <tor.andersson@artifex.com> | 2018-10-24 14:17:01 +0200 |
commit | 645b5eb857310819fc66d73c32751958439f5d12 (patch) | |
tree | 4f73d2f58668049e40d4b1b2b25065592956476f /source/pdf | |
parent | 224c638fb313efb90aa0eb489d184e704718c482 (diff) | |
download | mupdf-645b5eb857310819fc66d73c32751958439f5d12.tar.xz |
Drop page upon exception while loading hinted page.
Diffstat (limited to 'source/pdf')
-rw-r--r-- | source/pdf/pdf-xref.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/source/pdf/pdf-xref.c b/source/pdf/pdf-xref.c index 03df63d7..71b74b65 100644 --- a/source/pdf/pdf-xref.c +++ b/source/pdf/pdf-xref.c @@ -1840,24 +1840,29 @@ pdf_obj_read(fz_context *ctx, pdf_document *doc, int64_t *offset, int *nump, pdf static void pdf_load_hinted_page(fz_context *ctx, pdf_document *doc, int pagenum) { + pdf_obj *page = NULL; + if (!doc->hints_loaded || !doc->linear_page_refs) return; if (doc->linear_page_refs[pagenum]) return; + fz_var(page); + fz_try(ctx) { int num = doc->hint_page[pagenum].number; - pdf_obj *page = pdf_load_object(ctx, doc, num); + page = pdf_load_object(ctx, doc, num); if (pdf_name_eq(ctx, PDF_NAME(Page), pdf_dict_get(ctx, page, PDF_NAME(Type)))) { /* We have found the page object! */ DEBUGMESS((ctx, "LoadHintedPage pagenum=%d num=%d", pagenum, num)); doc->linear_page_refs[pagenum] = pdf_new_indirect(ctx, doc, num, 0); } - pdf_drop_obj(ctx, page); } + fz_always(ctx) + pdf_drop_obj(ctx, page); fz_catch(ctx) { fz_rethrow_if(ctx, FZ_ERROR_TRYLATER); |