diff options
-rw-r--r-- | fitz/res_font.c | 14 | ||||
-rw-r--r-- | pdf/pdf_form.c | 17 | ||||
-rw-r--r-- | pdf/pdf_xobject.c | 25 |
3 files changed, 20 insertions, 36 deletions
diff --git a/fitz/res_font.c b/fitz/res_font.c index ea4b588f..3638c476 100644 --- a/fitz/res_font.c +++ b/fitz/res_font.c @@ -880,8 +880,18 @@ fz_bound_t3_glyph(fz_context *ctx, fz_font *font, int gid, fz_matrix trm) ctm = fz_concat(font->t3matrix, trm); dev = fz_new_bbox_device(ctx, &bounds); - fz_run_display_list(list, dev, ctm, fz_infinite_rect, NULL); - fz_free_device(dev); + fz_try(ctx) + { + fz_run_display_list(list, dev, ctm, fz_infinite_rect, NULL); + } + fz_always(ctx) + { + fz_free_device(dev); + } + fz_catch(ctx) + { + fz_rethrow(ctx); + } return bounds; } diff --git a/pdf/pdf_form.c b/pdf/pdf_form.c index 8603986c..8fbebbc8 100644 --- a/pdf/pdf_form.c +++ b/pdf/pdf_form.c @@ -1151,7 +1151,6 @@ static pdf_xobject *load_or_create_form(pdf_document *doc, pdf_obj *obj, fz_rect { fz_context *ctx = doc->ctx; pdf_obj *ap = NULL; - pdf_obj *tobj = NULL; fz_matrix mat; int rot; pdf_obj *formobj = NULL; @@ -1161,7 +1160,6 @@ static pdf_xobject *load_or_create_form(pdf_document *doc, pdf_obj *obj, fz_rect int create_form = 0; fz_var(formobj); - fz_var(tobj); fz_var(form); fz_var(fzbuf); fz_try(ctx) @@ -1176,21 +1174,15 @@ static pdf_xobject *load_or_create_form(pdf_document *doc, pdf_obj *obj, fz_rect ap = pdf_dict_gets(obj, "AP"); if (ap == NULL) { - tobj = pdf_new_dict(ctx, 1); - pdf_dict_puts(obj, "AP", tobj); - ap = tobj; - pdf_drop_obj(tobj); - tobj = NULL; + ap = pdf_new_dict(ctx, 1); + pdf_dict_puts_drop(obj, "AP", ap); } formobj = pdf_dict_gets(ap, dn); if (formobj == NULL) { - tobj = pdf_new_xobject(doc, *rect, mat); - pdf_dict_puts(ap, dn, tobj); - formobj = tobj; - pdf_drop_obj(tobj); - tobj = NULL; + formobj = pdf_new_xobject(doc, *rect, mat); + pdf_dict_puts_drop(ap, dn, formobj); create_form = 1; } @@ -1205,7 +1197,6 @@ static pdf_xobject *load_or_create_form(pdf_document *doc, pdf_obj *obj, fz_rect } fz_always(ctx) { - pdf_drop_obj(tobj); fz_drop_buffer(ctx, fzbuf); } fz_catch(ctx) diff --git a/pdf/pdf_xobject.c b/pdf/pdf_xobject.c index e236edd0..17d8300f 100644 --- a/pdf/pdf_xobject.c +++ b/pdf/pdf_xobject.c @@ -226,25 +226,8 @@ pdf_new_xobject(pdf_document *xref, fz_rect bbox, fz_matrix mat) void pdf_update_xobject_contents(pdf_document *xref, pdf_xobject *form, fz_buffer *buffer) { - fz_context *ctx = xref->ctx; - pdf_obj *len = NULL; - - fz_var(len); - - fz_try(ctx) - { - len = pdf_new_int(ctx, buffer->len); - pdf_dict_dels(form->contents, "Filter"); - pdf_dict_puts(form->contents, "Length", len); - pdf_update_stream(xref, pdf_to_num(form->contents), buffer); - form->iteration ++; - } - fz_always(ctx) - { - pdf_drop_obj(len); - } - fz_catch(ctx) - { - fz_rethrow(ctx); - } + pdf_dict_dels(form->contents, "Filter"); + pdf_dict_puts_drop(form->contents, "Length", pdf_new_int(xref->ctx, buffer->len)); + pdf_update_stream(xref, pdf_to_num(form->contents), buffer); + form->iteration ++; } |