summaryrefslogtreecommitdiff
path: root/source/pdf
diff options
context:
space:
mode:
authorRobin Watts <robin.watts@artifex.com>2016-07-20 17:25:19 +0100
committerRobin Watts <robin.watts@artifex.com>2016-07-20 17:45:06 +0100
commit79170894355bb8c308f6a1c22f03a6a094d546ff (patch)
treee6189ee263f3898ed1d4e87d06b6c1238f01d04c /source/pdf
parent545bd0603213115f9003894a2e2db1b06dbb33ec (diff)
downloadmupdf-79170894355bb8c308f6a1c22f03a6a094d546ff.tar.xz
Fix memory leaks during annotation synthesis.
Diffstat (limited to 'source/pdf')
-rw-r--r--source/pdf/pdf-xobject.c12
1 files changed, 5 insertions, 7 deletions
diff --git a/source/pdf/pdf-xobject.c b/source/pdf/pdf-xobject.c
index 4fcea897..9904570d 100644
--- a/source/pdf/pdf-xobject.c
+++ b/source/pdf/pdf-xobject.c
@@ -154,22 +154,20 @@ pdf_new_xobject(fz_context *ctx, pdf_document *doc, const fz_rect *bbox, const f
idict_num = pdf_create_object(ctx, doc);
pdf_update_object(ctx, doc, idict_num, dict);
idict = pdf_new_indirect(ctx, doc, idict_num, 0);
- pdf_drop_obj(ctx, dict);
- dict = NULL;
pdf_store_item(ctx, idict, form, pdf_xobject_size(form));
form->obj = pdf_keep_obj(ctx, idict);
-
+ }
+ fz_always(ctx)
+ {
+ pdf_drop_obj(ctx, dict);
+ pdf_drop_obj(ctx, res);
pdf_drop_xobject(ctx, form);
- form = NULL;
}
fz_catch(ctx)
{
- pdf_drop_obj(ctx, res);
- pdf_drop_obj(ctx, dict);
pdf_drop_obj(ctx, idict);
- pdf_drop_xobject(ctx, form);
fz_rethrow(ctx);
}