From aeb450a0b00e0996f6f6e0f4e160c4ed0b595d90 Mon Sep 17 00:00:00 2001 From: Tor Andersson Date: Thu, 2 Jul 2009 20:05:01 +0200 Subject: Increment reference count of catalog and info objects when opening a pdf. --- apps/common/pdfapp.c | 3 +++ apps/pdfclean.c | 4 ++++ apps/pdfdraw.c | 4 ++++ apps/pdfextract.c | 4 ++++ apps/pdfinfo.c | 4 ++++ apps/pdfshow.c | 4 ++++ 6 files changed, 23 insertions(+) diff --git a/apps/common/pdfapp.c b/apps/common/pdfapp.c index bb15d354..7fa9310a 100644 --- a/apps/common/pdfapp.c +++ b/apps/common/pdfapp.c @@ -130,11 +130,14 @@ void pdfapp_open(pdfapp_t *app, char *filename) app->xref->root = fz_resolveindirect(obj); if (!app->xref->root) pdfapp_error(app, fz_throw("syntaxerror: missing Root object")); + fz_keepobj(app->xref->root); obj = fz_dictgets(app->xref->trailer, "Info"); app->xref->info = fz_resolveindirect(obj); if (!app->xref->info) pdfapp_warn(app, "Could not load PDF meta information."); + if (app->xref->info) + fz_keepobj(app->xref->info); error = pdf_loadnametrees(app->xref); if (error) diff --git a/apps/pdfclean.c b/apps/pdfclean.c index bfc94a36..211c461d 100644 --- a/apps/pdfclean.c +++ b/apps/pdfclean.c @@ -62,9 +62,13 @@ void openxref(char *filename, char *password) /* TODO: move into mupdf lib, see pdfapp_open in pdfapp.c */ obj = fz_dictgets(xref->trailer, "Root"); xref->root = fz_resolveindirect(obj); + if (xref->root) + fz_keepobj(xref->root); obj = fz_dictgets(xref->trailer, "Info"); xref->info = fz_resolveindirect(obj); + if (xref->info) + fz_keepobj(xref->info); } /* diff --git a/apps/pdfdraw.c b/apps/pdfdraw.c index a5bd6063..d26d4b9b 100644 --- a/apps/pdfdraw.c +++ b/apps/pdfdraw.c @@ -71,9 +71,13 @@ void openxref(char *filename, char *password) /* TODO: move into mupdf lib, see pdfapp_open in pdfapp.c */ obj = fz_dictgets(xref->trailer, "Root"); xref->root = fz_resolveindirect(obj); + if (xref->root) + fz_keepobj(xref->root); obj = fz_dictgets(xref->trailer, "Info"); xref->info = fz_resolveindirect(obj); + if (xref->info) + fz_keepobj(xref->info); } /* diff --git a/apps/pdfextract.c b/apps/pdfextract.c index b878621c..1e7e9473 100644 --- a/apps/pdfextract.c +++ b/apps/pdfextract.c @@ -45,9 +45,13 @@ void openxref(char *filename, char *password) /* TODO: move into mupdf lib, see pdfapp_open in pdfapp.c */ obj = fz_dictgets(xref->trailer, "Root"); xref->root = fz_resolveindirect(obj); + if (xref->root) + fz_keepobj(xref->root); obj = fz_dictgets(xref->trailer, "Info"); xref->info = fz_resolveindirect(obj); + if (xref->info) + fz_keepobj(xref->info); } void closexref() diff --git a/apps/pdfinfo.c b/apps/pdfinfo.c index 4d3ed2bc..a1cb3fcd 100644 --- a/apps/pdfinfo.c +++ b/apps/pdfinfo.c @@ -96,9 +96,13 @@ void opensrc(char *filename, char *password, int loadpages) /* TODO: move into mupdf lib, see pdfapp_open in pdfapp.c */ obj = fz_dictgets(src->trailer, "Root"); src->root = fz_resolveindirect(obj); + if (src->root) + fz_keepobj(src->root); obj = fz_dictgets(src->trailer, "Info"); src->info = fz_resolveindirect(obj); + if (src->info) + fz_keepobj(src->info); error = pdf_loadnametrees(src); if (error) diff --git a/apps/pdfshow.c b/apps/pdfshow.c index 981d5b4b..994a885c 100644 --- a/apps/pdfshow.c +++ b/apps/pdfshow.c @@ -45,9 +45,13 @@ void openxref(char *filename, char *password) /* TODO: move into mupdf lib, see pdfapp_open in pdfapp.c */ obj = fz_dictgets(xref->trailer, "Root"); xref->root = fz_resolveindirect(obj); + if (xref->root) + fz_keepobj(xref->root); obj = fz_dictgets(xref->trailer, "Info"); xref->info = fz_resolveindirect(obj); + if (xref->info) + fz_keepobj(xref->info); } void closexref() -- cgit v1.2.3