summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGlenn Kennard <glenn.kennard@gmail.com>2008-04-23 01:14:09 +0200
committerGlenn Kennard <glenn.kennard@gmail.com>2008-04-23 01:14:09 +0200
commit7bf37653e14b8f74d885082c7819fd0be4059b46 (patch)
tree1bbf191699a457a4a025e950e203534bb7832025
parent6d67c7dd5179e42a4fb8c1934cda316525128d55 (diff)
downloadmupdf-7bf37653e14b8f74d885082c7819fd0be4059b46.tar.xz
Make sure pattern is removed from store on error.
-rw-r--r--mupdf/pdf_pattern.c4
-rw-r--r--mupdf/pdf_xobject.c9
2 files changed, 7 insertions, 6 deletions
diff --git a/mupdf/pdf_pattern.c b/mupdf/pdf_pattern.c
index 955ed46b..cbf316fb 100644
--- a/mupdf/pdf_pattern.c
+++ b/mupdf/pdf_pattern.c
@@ -74,7 +74,7 @@ pdf_loadpattern(pdf_pattern **patp, pdf_xref *xref, fz_obj *dict, fz_obj *stmref
if (error)
{
error = fz_rethrow(error, "cannot store pattern resource");
- goto cleanup;
+ goto cleanupstore;
}
/*
@@ -157,6 +157,8 @@ pdf_loadpattern(pdf_pattern **patp, pdf_xref *xref, fz_obj *dict, fz_obj *stmref
cleanupcsi:
pdf_dropcsi(csi);
cleanup:
+ pdf_removeitem(xref->store, PDF_KPATTERN, stmref);
+cleanupstore:
pdf_droppattern(pat);
return error; /* already rethrown */
}
diff --git a/mupdf/pdf_xobject.c b/mupdf/pdf_xobject.c
index e9a623f3..eeb14e01 100644
--- a/mupdf/pdf_xobject.c
+++ b/mupdf/pdf_xobject.c
@@ -5,7 +5,6 @@ fz_error *
pdf_loadxobject(pdf_xobject **formp, pdf_xref *xref, fz_obj *dict, fz_obj *ref)
{
fz_error *error;
- char *reason;
pdf_xobject *form;
fz_obj *obj;
@@ -59,14 +58,14 @@ pdf_loadxobject(pdf_xobject **formp, pdf_xref *xref, fz_obj *dict, fz_obj *ref)
if (error)
{
fz_dropobj(obj);
- reason = "cannot resolve xobject resources";
+ error = fz_rethrow(error, "cannot resolve xobject resources");
goto cleanup;
}
error = pdf_loadresources(&form->resources, xref, obj);
fz_dropobj(obj);
if (error)
{
- reason = "cannot load xobject resources";
+ error = fz_rethrow(error, "cannot load xobject resources");
goto cleanup;
}
}
@@ -74,7 +73,7 @@ pdf_loadxobject(pdf_xobject **formp, pdf_xref *xref, fz_obj *dict, fz_obj *ref)
error = pdf_loadstream(&form->contents, xref, fz_tonum(ref), fz_togen(ref));
if (error)
{
- reason = "cannot load xobject content stream";
+ error = fz_rethrow(error, "cannot load xobject content stream");
goto cleanup;
}
@@ -87,7 +86,7 @@ pdf_loadxobject(pdf_xobject **formp, pdf_xref *xref, fz_obj *dict, fz_obj *ref)
cleanup:
pdf_removeitem(xref->store, PDF_KXOBJECT, ref);
pdf_dropxobject(form);
- return fz_rethrow(error, reason);
+ return error;
}
pdf_xobject *