summaryrefslogtreecommitdiff
path: root/source/pdf/pdf-xobject.c
diff options
context:
space:
mode:
authorSebastian Rasmussen <sebras@gmail.com>2016-04-18 13:00:24 +0200
committerRobin Watts <robin.watts@artifex.com>2016-04-22 17:26:48 +0100
commitf9f144849ca9611dd46e6cbb27b9f1100371e455 (patch)
treec2bc1b4be466822d624dbecdc8668c593c6cef90 /source/pdf/pdf-xobject.c
parentf88bfe2e62dbadb96d4f52d7aa025f0a516078da (diff)
downloadmupdf-f9f144849ca9611dd46e6cbb27b9f1100371e455.tar.xz
pdf: Remember to drop objects inserted into dicts.
Diffstat (limited to 'source/pdf/pdf-xobject.c')
-rw-r--r--source/pdf/pdf-xobject.c42
1 files changed, 10 insertions, 32 deletions
diff --git a/source/pdf/pdf-xobject.c b/source/pdf/pdf-xobject.c
index fa765a5d..95680ed5 100644
--- a/source/pdf/pdf-xobject.c
+++ b/source/pdf/pdf-xobject.c
@@ -121,51 +121,31 @@ pdf_new_xobject(fz_context *ctx, pdf_document *doc, const fz_rect *bbox, const f
pdf_obj *idict = NULL;
pdf_obj *dict = NULL;
pdf_xobject *form = NULL;
- pdf_obj *obj = NULL;
pdf_obj *res = NULL;
- pdf_obj *procset = NULL;
+ pdf_obj *procset;
fz_var(idict);
fz_var(dict);
fz_var(form);
- fz_var(obj);
fz_var(res);
- fz_var(procset);
+
fz_try(ctx)
{
dict = pdf_new_dict(ctx, doc, 0);
-
- obj = pdf_new_rect(ctx, doc, bbox);
- pdf_dict_put(ctx, dict, PDF_NAME_BBox, obj);
- pdf_drop_obj(ctx, obj);
- obj = NULL;
-
- obj = pdf_new_int(ctx, doc, 1);
- pdf_dict_put(ctx, dict, PDF_NAME_FormType, obj);
- pdf_drop_obj(ctx, obj);
- obj = NULL;
-
- obj = pdf_new_int(ctx, doc, 0);
- pdf_dict_put(ctx, dict, PDF_NAME_Length, obj);
- pdf_drop_obj(ctx, obj);
- obj = NULL;
-
- obj = pdf_new_matrix(ctx, doc, mat);
- pdf_dict_put(ctx, dict, PDF_NAME_Matrix, obj);
- pdf_drop_obj(ctx, obj);
- obj = NULL;
+ pdf_dict_put_drop(ctx, dict, PDF_NAME_BBox, pdf_new_rect(ctx, doc, bbox));
+ pdf_dict_put_drop(ctx, dict, PDF_NAME_FormType, pdf_new_int(ctx, doc, 1));
+ pdf_dict_put_drop(ctx, dict, PDF_NAME_Length, pdf_new_int(ctx, doc, 0));
+ pdf_dict_put_drop(ctx, dict, PDF_NAME_Matrix, pdf_new_matrix(ctx, doc, mat));
res = pdf_new_dict(ctx, doc, 0);
+ pdf_dict_put(ctx, dict, PDF_NAME_Resources, res);
+
procset = pdf_new_array(ctx, doc, 2);
+ pdf_dict_put_drop(ctx, res, PDF_NAME_ProcSet, procset);
pdf_array_push(ctx, procset, PDF_NAME_PDF);
pdf_array_push(ctx, procset, PDF_NAME_Text);
- pdf_dict_put(ctx, res, PDF_NAME_ProcSet, procset);
- pdf_drop_obj(ctx, procset);
- procset = NULL;
- pdf_dict_put(ctx, dict, PDF_NAME_Resources, res);
pdf_dict_put(ctx, dict, PDF_NAME_Subtype, PDF_NAME_Form);
-
pdf_dict_put(ctx, dict, PDF_NAME_Type, PDF_NAME_XObject);
form = fz_malloc_struct(ctx, pdf_xobject);
@@ -204,13 +184,11 @@ pdf_new_xobject(fz_context *ctx, pdf_document *doc, const fz_rect *bbox, const f
}
fz_catch(ctx)
{
- pdf_drop_obj(ctx, procset);
pdf_drop_obj(ctx, res);
- pdf_drop_obj(ctx, obj);
pdf_drop_obj(ctx, dict);
pdf_drop_obj(ctx, idict);
pdf_drop_xobject(ctx, form);
- fz_rethrow_message(ctx, "failed to create xobject)");
+ fz_rethrow_message(ctx, "failed to create xobject");
}
return idict;