summaryrefslogtreecommitdiff
path: root/source
diff options
context:
space:
mode:
authorSebastian Rasmussen <sebras@gmail.com>2018-10-03 13:54:57 +0800
committerTor Andersson <tor.andersson@artifex.com>2018-10-24 14:17:01 +0200
commit645b5eb857310819fc66d73c32751958439f5d12 (patch)
tree4f73d2f58668049e40d4b1b2b25065592956476f /source
parent224c638fb313efb90aa0eb489d184e704718c482 (diff)
downloadmupdf-645b5eb857310819fc66d73c32751958439f5d12.tar.xz
Drop page upon exception while loading hinted page.
Diffstat (limited to 'source')
-rw-r--r--source/pdf/pdf-xref.c9
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);