summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSebastian Rasmussen <sebras@hotmail.com>2009-12-05 18:01:37 +0100
committerSebastian Rasmussen <sebras@hotmail.com>2009-12-05 18:01:37 +0100
commita1af44ac5a8a0f94f8b8ba9fe7597422a87792e0 (patch)
tree1a281535e20a976394a1e1e319d3f9b1268b8ecb
parent2e2e97db605cc58d76033fc92c3806d475e2c262 (diff)
downloadmupdf-a1af44ac5a8a0f94f8b8ba9fe7597422a87792e0.tar.xz
Reference count XObject resource dicts everywhere and drop it when freeing XObject.
-rw-r--r--mupdf/pdf_xobject.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/mupdf/pdf_xobject.c b/mupdf/pdf_xobject.c
index 831796eb..62cebb35 100644
--- a/mupdf/pdf_xobject.c
+++ b/mupdf/pdf_xobject.c
@@ -65,6 +65,8 @@ pdf_loadxobject(pdf_xobject **formp, pdf_xref *xref, fz_obj *dict)
pdf_logrsrc("transparency %d\n", form->transparency);
form->resources = fz_dictgets(dict, "Resources");
+ if (form->resources)
+ form->resources = fz_keepobj(form->resources);
error = pdf_loadstream(&form->contents, xref, fz_tonum(dict), fz_togen(dict));
if (error)
@@ -98,6 +100,7 @@ pdf_dropxobject(pdf_xobject *xobj)
{
if (xobj && --xobj->refs == 0)
{
+ if (xobj->resources) fz_dropobj(xobj->resources);
if (xobj->contents) fz_dropbuffer(xobj->contents);
fz_free(xobj);
}