diff options
author | Glenn Kennard <glenn.kennard@gmail.com> | 2008-04-23 01:14:09 +0200 |
---|---|---|
committer | Glenn Kennard <glenn.kennard@gmail.com> | 2008-04-23 01:14:09 +0200 |
commit | 7bf37653e14b8f74d885082c7819fd0be4059b46 (patch) | |
tree | 1bbf191699a457a4a025e950e203534bb7832025 | |
parent | 6d67c7dd5179e42a4fb8c1934cda316525128d55 (diff) | |
download | mupdf-7bf37653e14b8f74d885082c7819fd0be4059b46.tar.xz |
Make sure pattern is removed from store on error.
-rw-r--r-- | mupdf/pdf_pattern.c | 4 | ||||
-rw-r--r-- | mupdf/pdf_xobject.c | 9 |
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 * |