diff options
Diffstat (limited to 'source/pdf')
-rw-r--r-- | source/pdf/pdf-clean-file.c | 6 | ||||
-rw-r--r-- | source/pdf/pdf-clean.c | 12 | ||||
-rw-r--r-- | source/pdf/pdf-device.c | 15 | ||||
-rw-r--r-- | source/pdf/pdf-form.c | 150 | ||||
-rw-r--r-- | source/pdf/pdf-object.c | 84 | ||||
-rw-r--r-- | source/pdf/pdf-parse.c | 49 | ||||
-rw-r--r-- | source/pdf/pdf-write.c | 25 | ||||
-rw-r--r-- | source/pdf/pdf-xref.c | 24 |
8 files changed, 81 insertions, 284 deletions
diff --git a/source/pdf/pdf-clean-file.c b/source/pdf/pdf-clean-file.c index f9311064..224a4d03 100644 --- a/source/pdf/pdf-clean-file.c +++ b/source/pdf/pdf-clean-file.c @@ -231,10 +231,8 @@ static void retainpages(fz_context *ctx, globals *glo, int argc, char **argv) /* Update page count and kids array */ countobj = pdf_new_int(ctx, doc, pdf_array_len(ctx, kids)); - pdf_dict_put(ctx, pages, PDF_NAME_Count, countobj); - pdf_drop_obj(ctx, countobj); - pdf_dict_put(ctx, pages, PDF_NAME_Kids, kids); - pdf_drop_obj(ctx, kids); + pdf_dict_put_drop(ctx, pages, PDF_NAME_Count, countobj); + pdf_dict_put_drop(ctx, pages, PDF_NAME_Kids, kids); /* Force the next call to pdf_count_pages to recount */ glo->doc->page_count = 0; diff --git a/source/pdf/pdf-clean.c b/source/pdf/pdf-clean.c index b8fa96c7..42789323 100644 --- a/source/pdf/pdf-clean.c +++ b/source/pdf/pdf-clean.c @@ -7,14 +7,13 @@ pdf_clean_stream_object(fz_context *ctx, pdf_document *doc, pdf_obj *obj, pdf_ob pdf_processor *proc_buffer = NULL; pdf_processor *proc_filter = NULL; pdf_obj *res = NULL; - pdf_obj *ref = NULL; + pdf_obj *ref; fz_buffer *buffer; if (!obj) return; fz_var(res); - fz_var(ref); fz_var(proc_buffer); fz_var(proc_filter); @@ -43,7 +42,7 @@ pdf_clean_stream_object(fz_context *ctx, pdf_document *doc, pdf_obj *obj, pdf_ob if (own_res) { ref = pdf_add_object(ctx, doc, res); - pdf_dict_put(ctx, obj, PDF_NAME_Resources, ref); + pdf_dict_put_drop(ctx, obj, PDF_NAME_Resources, ref); } } fz_always(ctx) @@ -52,7 +51,6 @@ pdf_clean_stream_object(fz_context *ctx, pdf_document *doc, pdf_obj *obj, pdf_ob pdf_drop_processor(ctx, proc_buffer); fz_drop_buffer(ctx, buffer); pdf_drop_obj(ctx, res); - pdf_drop_obj(ctx, ref); } fz_catch(ctx) { @@ -66,12 +64,11 @@ pdf_clean_type3(fz_context *ctx, pdf_document *doc, pdf_obj *obj, pdf_obj *orig_ pdf_processor *proc_buffer = NULL; pdf_processor *proc_filter = NULL; pdf_obj *res = NULL; - pdf_obj *ref = NULL; + pdf_obj *ref; pdf_obj *charprocs; int i, l; fz_var(res); - fz_var(ref); fz_var(proc_buffer); fz_var(proc_filter); @@ -118,12 +115,11 @@ pdf_clean_type3(fz_context *ctx, pdf_document *doc, pdf_obj *obj, pdf_obj *orig_ pdf_dict_put(ctx, res, PDF_NAME_ProcSet, pdf_dict_get(ctx, orig_res, PDF_NAME_ProcSet)); ref = pdf_add_object(ctx, doc, res); - pdf_dict_put(ctx, obj, PDF_NAME_Resources, ref); + pdf_dict_put_drop(ctx, obj, PDF_NAME_Resources, ref); } fz_always(ctx) { pdf_drop_obj(ctx, res); - pdf_drop_obj(ctx, ref); } fz_catch(ctx) { diff --git a/source/pdf/pdf-device.c b/source/pdf/pdf-device.c index a647702e..314dc85e 100644 --- a/source/pdf/pdf-device.c +++ b/source/pdf/pdf-device.c @@ -295,10 +295,7 @@ pdf_dev_alpha(fz_context *ctx, pdf_device *pdev, float alpha, int stroke) if (i == pdev->num_alphas) { - pdf_obj *o; - pdf_obj *ref = NULL; - - fz_var(ref); + pdf_obj *o, *ref; /* No. Need to make a new one */ if (pdev->num_alphas == pdev->max_alphas) @@ -317,14 +314,13 @@ pdf_dev_alpha(fz_context *ctx, pdf_device *pdev, float alpha, int stroke) { char text[32]; pdf_dict_put_drop(ctx, o, (stroke ? PDF_NAME_CA : PDF_NAME_ca), pdf_new_real(ctx, doc, alpha)); - ref = pdf_add_object(ctx, doc, o); fz_snprintf(text, sizeof(text), "ExtGState/Alp%d", i); - pdf_dict_putp(ctx, pdev->resources, text, ref); + ref = pdf_add_object(ctx, doc, o); + pdf_dict_putp_drop(ctx, pdev->resources, text, ref); } fz_always(ctx) { pdf_drop_obj(ctx, o); - pdf_drop_obj(ctx, ref); } fz_catch(ctx) { @@ -929,13 +925,12 @@ pdf_dev_begin_mask(fz_context *ctx, fz_device *dev, const fz_rect *bbox, int lum egs = pdf_new_dict(ctx, doc, 5); pdf_dict_put_drop(ctx, egs, PDF_NAME_Type, PDF_NAME_ExtGState); pdf_dict_put_drop(ctx, egs, PDF_NAME_SMask, pdf_add_object(ctx, doc, smask)); - egs_ref = pdf_add_object(ctx, doc, egs); { char text[32]; fz_snprintf(text, sizeof(text), "ExtGState/SM%d", pdev->num_smasks++); - pdf_dict_putp(ctx, pdev->resources, text, egs_ref); - pdf_drop_obj(ctx, egs_ref); + egs_ref = pdf_add_object(ctx, doc, egs); + pdf_dict_putp_drop(ctx, pdev->resources, text, egs_ref); } gs = CURRENT_GSTATE(pdev); fz_append_printf(ctx, gs->buf, "/SM%d gs\n", pdev->num_smasks-1); diff --git a/source/pdf/pdf-form.c b/source/pdf/pdf-form.c index b454420c..09b8258e 100644 --- a/source/pdf/pdf-form.c +++ b/source/pdf/pdf-form.c @@ -54,7 +54,7 @@ static void pdf_field_mark_dirty(fz_context *ctx, pdf_document *doc, pdf_obj *fi static void update_field_value(fz_context *ctx, pdf_document *doc, pdf_obj *obj, const char *text) { - pdf_obj *sobj = NULL; + pdf_obj *sobj; pdf_obj *grp; if (!text) @@ -66,20 +66,8 @@ static void update_field_value(fz_context *ctx, pdf_document *doc, pdf_obj *obj, if (grp) obj = grp; - fz_var(sobj); - fz_try(ctx) - { - sobj = pdf_new_string(ctx, doc, text, strlen(text)); - pdf_dict_put(ctx, obj, PDF_NAME_V, sobj); - } - fz_always(ctx) - { - pdf_drop_obj(ctx, sobj); - } - fz_catch(ctx) - { - fz_rethrow(ctx); - } + sobj = pdf_new_string(ctx, doc, text, strlen(text)); + pdf_dict_put_drop(ctx, obj, PDF_NAME_V, sobj); pdf_field_mark_dirty(ctx, doc, obj); } @@ -163,18 +151,7 @@ static void reset_form_field(fz_context *ctx, pdf_document *doc, pdf_obj *field) else leafv = PDF_NAME_Off; - fz_try(ctx) - { - pdf_dict_put(ctx, field, PDF_NAME_AS, leafv); - } - fz_always(ctx) - { - pdf_drop_obj(ctx, leafv); - } - fz_catch(ctx) - { - fz_rethrow(ctx); - } + pdf_dict_put_drop(ctx, field, PDF_NAME_AS, leafv); } break; @@ -554,23 +531,8 @@ static void toggle_check_box(fz_context *ctx, pdf_document *doc, pdf_obj *obj) if (val && grp) { - pdf_obj *v = NULL; - - fz_var(v); - fz_try(ctx) - { - v = pdf_new_string(ctx, doc, val, strlen(val)); - pdf_dict_put(ctx, grp, PDF_NAME_V, v); - } - fz_always(ctx) - { - pdf_drop_obj(ctx, v); - } - fz_catch(ctx) - { - fz_rethrow(ctx); - } - + pdf_obj *v = pdf_new_string(ctx, doc, val, strlen(val)); + pdf_dict_put_drop(ctx, grp, PDF_NAME_V, v); recalculate(ctx, doc); } } @@ -825,26 +787,13 @@ static void update_checkbox_selector(fz_context *ctx, pdf_document *doc, pdf_obj else { pdf_obj *n = pdf_dict_getp(ctx, field, "AP/N"); - pdf_obj *oval = NULL; - - fz_var(oval); - fz_try(ctx) - { - if (pdf_dict_gets(ctx, n, val)) - oval = pdf_new_name(ctx, doc, val); - else - oval = PDF_NAME_Off; + pdf_obj *oval; - pdf_dict_put(ctx, field, PDF_NAME_AS, oval); - } - fz_always(ctx) - { - pdf_drop_obj(ctx, oval); - } - fz_catch(ctx) - { - fz_rethrow(ctx); - } + if (pdf_dict_gets(ctx, n, val)) + oval = pdf_new_name(ctx, doc, val); + else + oval = PDF_NAME_Off; + pdf_dict_put_drop(ctx, field, PDF_NAME_AS, oval); } } @@ -898,7 +847,7 @@ char *pdf_field_border_style(fz_context *ctx, pdf_document *doc, pdf_obj *field) void pdf_field_set_border_style(fz_context *ctx, pdf_document *doc, pdf_obj *field, const char *text) { - pdf_obj *val = NULL; + pdf_obj *val; if (!strcmp(text, "Solid")) val = PDF_NAME_S; @@ -913,40 +862,17 @@ void pdf_field_set_border_style(fz_context *ctx, pdf_document *doc, pdf_obj *fie else return; - fz_try(ctx) - { - pdf_dict_putl(ctx, field, val, PDF_NAME_BS, PDF_NAME_S, NULL); - pdf_field_mark_dirty(ctx, doc, field); - } - fz_always(ctx) - { - pdf_drop_obj(ctx, val); - } - fz_catch(ctx) - { - fz_rethrow(ctx); - } + pdf_dict_putl_drop(ctx, field, val, PDF_NAME_BS, PDF_NAME_S, NULL); + pdf_field_mark_dirty(ctx, doc, field); } void pdf_field_set_button_caption(fz_context *ctx, pdf_document *doc, pdf_obj *field, const char *text) { - pdf_obj *val = pdf_new_string(ctx, doc, text, strlen(text)); - - fz_try(ctx) - { - if (pdf_field_type(ctx, doc, field) == PDF_WIDGET_TYPE_PUSHBUTTON) - { - pdf_dict_putl(ctx, field, val, PDF_NAME_MK, PDF_NAME_CA, NULL); - pdf_field_mark_dirty(ctx, doc, field); - } - } - fz_always(ctx) + if (pdf_field_type(ctx, doc, field) == PDF_WIDGET_TYPE_PUSHBUTTON) { - pdf_drop_obj(ctx, val); - } - fz_catch(ctx) - { - fz_rethrow(ctx); + pdf_obj *val = pdf_new_string(ctx, doc, text, strlen(text)); + pdf_dict_putl_drop(ctx, field, val, PDF_NAME_MK, PDF_NAME_CA, NULL); + pdf_field_mark_dirty(ctx, doc, field); } } @@ -1035,7 +961,7 @@ void pdf_field_set_display(fz_context *ctx, pdf_document *doc, pdf_obj *field, i { int mask = (PDF_ANNOT_IS_HIDDEN|PDF_ANNOT_IS_PRINT|PDF_ANNOT_IS_NO_VIEW); int f = pdf_to_int(ctx, pdf_dict_get(ctx, field, PDF_NAME_F)) & ~mask; - pdf_obj *fo = NULL; + pdf_obj *fo; switch (d) { @@ -1052,20 +978,8 @@ void pdf_field_set_display(fz_context *ctx, pdf_document *doc, pdf_obj *field, i break; } - fz_var(fo); - fz_try(ctx) - { - fo = pdf_new_int(ctx, doc, f); - pdf_dict_put(ctx, field, PDF_NAME_F, fo); - } - fz_always(ctx) - { - pdf_drop_obj(ctx, fo); - } - fz_catch(ctx) - { - fz_rethrow(ctx); - } + fo = pdf_new_int(ctx, doc, f); + pdf_dict_put_drop(ctx, field, PDF_NAME_F, fo); } else { @@ -1093,13 +1007,12 @@ void pdf_field_set_text_color(fz_context *ctx, pdf_document *doc, pdf_obj *field unsigned char *buf; int ilen; size_t len; - pdf_obj *daobj = NULL; + pdf_obj *daobj; memset(&di, 0, sizeof(di)); fz_var(fzbuf); fz_var(di); - fz_var(daobj); fz_try(ctx) { int i; @@ -1115,14 +1028,13 @@ void pdf_field_set_text_color(fz_context *ctx, pdf_document *doc, pdf_obj *field pdf_fzbuf_print_da(ctx, fzbuf, &di); len = fz_buffer_storage(ctx, fzbuf, &buf); daobj = pdf_new_string(ctx, doc, (char *)buf, len); - pdf_dict_put(ctx, field, PDF_NAME_DA, daobj); + pdf_dict_put_drop(ctx, field, PDF_NAME_DA, daobj); pdf_field_mark_dirty(ctx, doc, field); } fz_always(ctx) { pdf_da_info_fin(ctx, &di); fz_drop_buffer(ctx, fzbuf); - pdf_drop_obj(ctx, daobj); } fz_catch(ctx) { @@ -1324,14 +1236,13 @@ int pdf_choice_widget_value(fz_context *ctx, pdf_document *doc, pdf_widget *tw, void pdf_choice_widget_set_value(fz_context *ctx, pdf_document *doc, pdf_widget *tw, int n, char *opts[]) { pdf_annot *annot = (pdf_annot *)tw; - pdf_obj *optarr = NULL, *opt = NULL; + pdf_obj *optarr = NULL, *opt; int i; if (!annot) return; fz_var(optarr); - fz_var(opt); fz_try(ctx) { if (n != 1) @@ -1341,19 +1252,15 @@ void pdf_choice_widget_set_value(fz_context *ctx, pdf_document *doc, pdf_widget for (i = 0; i < n; i++) { opt = pdf_new_string(ctx, doc, opts[i], strlen(opts[i])); - pdf_array_push(ctx, optarr, opt); - pdf_drop_obj(ctx, opt); - opt = NULL; + pdf_array_push_drop(ctx, optarr, opt); } - pdf_dict_put(ctx, annot->obj, PDF_NAME_V, optarr); - pdf_drop_obj(ctx, optarr); + pdf_dict_put_drop(ctx, annot->obj, PDF_NAME_V, optarr); } else { opt = pdf_new_string(ctx, doc, opts[0], strlen(opts[0])); - pdf_dict_put(ctx, annot->obj, PDF_NAME_V, opt); - pdf_drop_obj(ctx, opt); + pdf_dict_put_drop(ctx, annot->obj, PDF_NAME_V, opt); } /* FIXME: when n > 1, we should be regenerating the indexes */ @@ -1366,7 +1273,6 @@ void pdf_choice_widget_set_value(fz_context *ctx, pdf_document *doc, pdf_widget fz_catch(ctx) { pdf_drop_obj(ctx, optarr); - pdf_drop_obj(ctx, opt); fz_rethrow(ctx); } } diff --git a/source/pdf/pdf-object.c b/source/pdf/pdf-object.c index c490bb69..7dc73216 100644 --- a/source/pdf/pdf-object.c +++ b/source/pdf/pdf-object.c @@ -830,38 +830,19 @@ pdf_array_find(fz_context *ctx, pdf_obj *arr, pdf_obj *obj) pdf_obj *pdf_new_rect(fz_context *ctx, pdf_document *doc, const fz_rect *rect) { - pdf_obj *arr = NULL; - pdf_obj *item = NULL; + pdf_obj *arr; + + arr = pdf_new_array(ctx, doc, 4); - fz_var(arr); - fz_var(item); fz_try(ctx) { - arr = pdf_new_array(ctx, doc, 4); - - item = pdf_new_real(ctx, doc, rect->x0); - pdf_array_push(ctx, arr, item); - pdf_drop_obj(ctx, item); - item = NULL; - - item = pdf_new_real(ctx, doc, rect->y0); - pdf_array_push(ctx, arr, item); - pdf_drop_obj(ctx, item); - item = NULL; - - item = pdf_new_real(ctx, doc, rect->x1); - pdf_array_push(ctx, arr, item); - pdf_drop_obj(ctx, item); - item = NULL; - - item = pdf_new_real(ctx, doc, rect->y1); - pdf_array_push(ctx, arr, item); - pdf_drop_obj(ctx, item); - item = NULL; + pdf_array_push_drop(ctx, arr, pdf_new_real(ctx, doc, rect->x0)); + pdf_array_push_drop(ctx, arr, pdf_new_real(ctx, doc, rect->y0)); + pdf_array_push_drop(ctx, arr, pdf_new_real(ctx, doc, rect->x1)); + pdf_array_push_drop(ctx, arr, pdf_new_real(ctx, doc, rect->y1)); } fz_catch(ctx) { - pdf_drop_obj(ctx, item); pdf_drop_obj(ctx, arr); fz_rethrow(ctx); } @@ -871,48 +852,21 @@ pdf_obj *pdf_new_rect(fz_context *ctx, pdf_document *doc, const fz_rect *rect) pdf_obj *pdf_new_matrix(fz_context *ctx, pdf_document *doc, const fz_matrix *mtx) { - pdf_obj *arr = NULL; - pdf_obj *item = NULL; + pdf_obj *arr; + + arr = pdf_new_array(ctx, doc, 6); - fz_var(arr); - fz_var(item); fz_try(ctx) { - arr = pdf_new_array(ctx, doc, 6); - - item = pdf_new_real(ctx, doc, mtx->a); - pdf_array_push(ctx, arr, item); - pdf_drop_obj(ctx, item); - item = NULL; - - item = pdf_new_real(ctx, doc, mtx->b); - pdf_array_push(ctx, arr, item); - pdf_drop_obj(ctx, item); - item = NULL; - - item = pdf_new_real(ctx, doc, mtx->c); - pdf_array_push(ctx, arr, item); - pdf_drop_obj(ctx, item); - item = NULL; - - item = pdf_new_real(ctx, doc, mtx->d); - pdf_array_push(ctx, arr, item); - pdf_drop_obj(ctx, item); - item = NULL; - - item = pdf_new_real(ctx, doc, mtx->e); - pdf_array_push(ctx, arr, item); - pdf_drop_obj(ctx, item); - item = NULL; - - item = pdf_new_real(ctx, doc, mtx->f); - pdf_array_push(ctx, arr, item); - pdf_drop_obj(ctx, item); - item = NULL; + pdf_array_push_drop(ctx, arr, pdf_new_real(ctx, doc, mtx->a)); + pdf_array_push_drop(ctx, arr, pdf_new_real(ctx, doc, mtx->b)); + pdf_array_push_drop(ctx, arr, pdf_new_real(ctx, doc, mtx->c)); + pdf_array_push_drop(ctx, arr, pdf_new_real(ctx, doc, mtx->d)); + pdf_array_push_drop(ctx, arr, pdf_new_real(ctx, doc, mtx->e)); + pdf_array_push_drop(ctx, arr, pdf_new_real(ctx, doc, mtx->f)); } fz_catch(ctx) { - pdf_drop_obj(ctx, item); pdf_drop_obj(ctx, arr); fz_rethrow(ctx); } @@ -1608,8 +1562,7 @@ pdf_deep_copy_obj(fz_context *ctx, pdf_obj *obj) for (i = 0; i < n; i++) { pdf_obj *obj_copy = pdf_deep_copy_obj(ctx, pdf_dict_get_val(ctx, obj, i)); - pdf_dict_put(ctx, dict, pdf_dict_get_key(ctx, obj, i), obj_copy); - pdf_drop_obj(ctx, obj_copy); + pdf_dict_put_drop(ctx, dict, pdf_dict_get_key(ctx, obj, i), obj_copy); } return dict; @@ -1624,8 +1577,7 @@ pdf_deep_copy_obj(fz_context *ctx, pdf_obj *obj) for (i = 0; i < n; i++) { pdf_obj *obj_copy = pdf_deep_copy_obj(ctx, pdf_array_get(ctx, obj, i)); - pdf_array_push(ctx, arr, obj_copy); - pdf_drop_obj(ctx, obj_copy); + pdf_array_push_drop(ctx, arr, obj_copy); } return arr; diff --git a/source/pdf/pdf-parse.c b/source/pdf/pdf-parse.c index e4715a26..92d0b423 100644 --- a/source/pdf/pdf-parse.c +++ b/source/pdf/pdf-parse.c @@ -341,16 +341,12 @@ pdf_parse_array(fz_context *ctx, pdf_document *doc, fz_stream *file, pdf_lexbuf if (n > 0) { obj = pdf_new_int_offset(ctx, doc, a); - pdf_array_push(ctx, ary, obj); - pdf_drop_obj(ctx, obj); - obj = NULL; + pdf_array_push_drop(ctx, ary, obj); } if (n > 1) { obj = pdf_new_int_offset(ctx, doc, b); - pdf_array_push(ctx, ary, obj); - pdf_drop_obj(ctx, obj); - obj = NULL; + pdf_array_push_drop(ctx, ary, obj); } n = 0; } @@ -358,9 +354,7 @@ pdf_parse_array(fz_context *ctx, pdf_document *doc, fz_stream *file, pdf_lexbuf if (tok == PDF_TOK_INT && n == 2) { obj = pdf_new_int_offset(ctx, doc, a); - pdf_array_push(ctx, ary, obj); - pdf_drop_obj(ctx, obj); - obj = NULL; + pdf_array_push_drop(ctx, ary, obj); a = b; n --; } @@ -383,61 +377,43 @@ pdf_parse_array(fz_context *ctx, pdf_document *doc, fz_stream *file, pdf_lexbuf if (n != 2) fz_throw(ctx, FZ_ERROR_SYNTAX, "cannot parse indirect reference in array"); obj = pdf_new_indirect(ctx, doc, a, b); - pdf_array_push(ctx, ary, obj); - pdf_drop_obj(ctx, obj); - obj = NULL; + pdf_array_push_drop(ctx, ary, obj); n = 0; break; case PDF_TOK_OPEN_ARRAY: obj = pdf_parse_array(ctx, doc, file, buf); - pdf_array_push(ctx, ary, obj); - pdf_drop_obj(ctx, obj); - obj = NULL; + pdf_array_push_drop(ctx, ary, obj); break; case PDF_TOK_OPEN_DICT: obj = pdf_parse_dict(ctx, doc, file, buf); - pdf_array_push(ctx, ary, obj); - pdf_drop_obj(ctx, obj); - obj = NULL; + pdf_array_push_drop(ctx, ary, obj); break; case PDF_TOK_NAME: obj = pdf_new_name(ctx, doc, buf->scratch); - pdf_array_push(ctx, ary, obj); - pdf_drop_obj(ctx, obj); - obj = NULL; + pdf_array_push_drop(ctx, ary, obj); break; case PDF_TOK_REAL: obj = pdf_new_real(ctx, doc, buf->f); - pdf_array_push(ctx, ary, obj); - pdf_drop_obj(ctx, obj); - obj = NULL; + pdf_array_push_drop(ctx, ary, obj); break; case PDF_TOK_STRING: obj = pdf_new_string(ctx, doc, buf->scratch, buf->len); - pdf_array_push(ctx, ary, obj); - pdf_drop_obj(ctx, obj); - obj = NULL; + pdf_array_push_drop(ctx, ary, obj); break; case PDF_TOK_TRUE: obj = pdf_new_bool(ctx, doc, 1); - pdf_array_push(ctx, ary, obj); - pdf_drop_obj(ctx, obj); - obj = NULL; + pdf_array_push_drop(ctx, ary, obj); break; case PDF_TOK_FALSE: obj = pdf_new_bool(ctx, doc, 0); - pdf_array_push(ctx, ary, obj); - pdf_drop_obj(ctx, obj); - obj = NULL; + pdf_array_push_drop(ctx, ary, obj); break; case PDF_TOK_NULL: obj = pdf_new_null(ctx, doc); - pdf_array_push(ctx, ary, obj); - pdf_drop_obj(ctx, obj); - obj = NULL; + pdf_array_push_drop(ctx, ary, obj); break; default: @@ -449,7 +425,6 @@ end: } fz_catch(ctx) { - pdf_drop_obj(ctx, obj); pdf_drop_obj(ctx, ary); fz_rethrow(ctx); } diff --git a/source/pdf/pdf-write.c b/source/pdf/pdf-write.c index 27ff94d6..5183b285 100644 --- a/source/pdf/pdf-write.c +++ b/source/pdf/pdf-write.c @@ -796,8 +796,7 @@ static void renumberobj(fz_context *ctx, pdf_document *doc, pdf_write_state *opt val = pdf_new_null(ctx, doc); else val = pdf_new_indirect(ctx, doc, opts->renumber_map[o], 0); - pdf_dict_put(ctx, obj, key, val); - pdf_drop_obj(ctx, val); + pdf_dict_put_drop(ctx, obj, key, val); } else { @@ -819,8 +818,7 @@ static void renumberobj(fz_context *ctx, pdf_document *doc, pdf_write_state *opt val = pdf_new_null(ctx, doc); else val = pdf_new_indirect(ctx, doc, opts->renumber_map[o], 0); - pdf_array_put(ctx, obj, i, val); - pdf_drop_obj(ctx, val); + pdf_array_put_drop(ctx, obj, i, val); } else { @@ -1681,8 +1679,7 @@ static void copystream(fz_context *ctx, pdf_document *doc, pdf_write_state *opts } newlen = pdf_new_int(ctx, doc, (int)len); - pdf_dict_put(ctx, obj, PDF_NAME_Length, newlen); - pdf_drop_obj(ctx, newlen); + pdf_dict_put_drop(ctx, obj, PDF_NAME_Length, newlen); fz_write_printf(ctx, opts->out, "%d %d obj\n", num, gen); pdf_print_obj(ctx, opts->out, obj, opts->do_tight); @@ -1744,8 +1741,7 @@ static void expandstream(fz_context *ctx, pdf_document *doc, pdf_write_state *op } newlen = pdf_new_int(ctx, doc, (int)len); - pdf_dict_put(ctx, obj, PDF_NAME_Length, newlen); - pdf_drop_obj(ctx, newlen); + pdf_dict_put_drop(ctx, obj, PDF_NAME_Length, newlen); fz_write_printf(ctx, opts->out, "%d %d obj\n", num, gen); pdf_print_obj(ctx, opts->out, obj, opts->do_tight); @@ -1971,7 +1967,6 @@ static void writexref(fz_context *ctx, pdf_document *doc, pdf_write_state *opts, fz_write_string(ctx, opts->out, "\n"); fz_var(trailer); - fz_var(nobj); fz_try(ctx) { @@ -1987,9 +1982,7 @@ static void writexref(fz_context *ctx, pdf_document *doc, pdf_write_state *opts, trailer = pdf_new_dict(ctx, doc, 5); nobj = pdf_new_int(ctx, doc, to); - pdf_dict_put(ctx, trailer, PDF_NAME_Size, nobj); - pdf_drop_obj(ctx, nobj); - nobj = NULL; + pdf_dict_put_drop(ctx, trailer, PDF_NAME_Size, nobj); if (first) { @@ -2008,16 +2001,10 @@ static void writexref(fz_context *ctx, pdf_document *doc, pdf_write_state *opts, if (main_xref_offset != 0) { nobj = pdf_new_int(ctx, doc, main_xref_offset); - pdf_dict_put(ctx, trailer, PDF_NAME_Prev, nobj); - pdf_drop_obj(ctx, nobj); - nobj = NULL; + pdf_dict_put_drop(ctx, trailer, PDF_NAME_Prev, nobj); } } } - fz_always(ctx) - { - pdf_drop_obj(ctx, nobj); - } fz_catch(ctx) { fz_rethrow(ctx); diff --git a/source/pdf/pdf-xref.c b/source/pdf/pdf-xref.c index 0f3f56b1..6a4117d9 100644 --- a/source/pdf/pdf-xref.c +++ b/source/pdf/pdf-xref.c @@ -1422,9 +1422,7 @@ pdf_init_document(fz_context *ctx, pdf_document *doc) if (pdf_name_eq(ctx, obj, PDF_NAME_Catalog)) { nobj = pdf_new_indirect(ctx, doc, i, 0); - pdf_dict_put(ctx, pdf_trailer(ctx, doc), PDF_NAME_Root, nobj); - pdf_drop_obj(ctx, nobj); - nobj = NULL; + pdf_dict_put_drop(ctx, pdf_trailer(ctx, doc), PDF_NAME_Root, nobj); } } @@ -1433,9 +1431,7 @@ pdf_init_document(fz_context *ctx, pdf_document *doc) if (pdf_dict_get(ctx, dict, PDF_NAME_Creator) || pdf_dict_get(ctx, dict, PDF_NAME_Producer)) { nobj = pdf_new_indirect(ctx, doc, i, 0); - pdf_dict_put(ctx, pdf_trailer(ctx, doc), PDF_NAME_Info, nobj); - pdf_drop_obj(ctx, nobj); - nobj = NULL; + pdf_dict_put_drop(ctx, pdf_trailer(ctx, doc), PDF_NAME_Info, nobj); } } @@ -1451,7 +1447,6 @@ pdf_init_document(fz_context *ctx, pdf_document *doc) fz_catch(ctx) { pdf_drop_obj(ctx, dict); - pdf_drop_obj(ctx, nobj); fz_rethrow(ctx); } @@ -2694,12 +2689,10 @@ pdf_add_stream(fz_context *ctx, pdf_document *doc, fz_buffer *buf, pdf_obj *obj, pdf_document *pdf_create_document(fz_context *ctx) { pdf_document *doc; - pdf_obj *o = NULL; pdf_obj *root; pdf_obj *pages; pdf_obj *trailer = NULL; - fz_var(o); fz_var(trailer); doc = pdf_new_document(ctx, NULL); @@ -2716,15 +2709,11 @@ pdf_document *pdf_create_document(fz_context *ctx) trailer = pdf_new_dict(ctx, doc, 2); pdf_dict_put_drop(ctx, trailer, PDF_NAME_Size, pdf_new_int(ctx, doc, 3)); - o = root = pdf_new_dict(ctx, doc, 2); - pdf_dict_put_drop(ctx, trailer, PDF_NAME_Root, pdf_add_object(ctx, doc, o)); - pdf_drop_obj(ctx, o); - o = NULL; + root = pdf_new_dict(ctx, doc, 2); + pdf_dict_put_drop(ctx, trailer, PDF_NAME_Root, pdf_add_object_drop(ctx, doc, root)); pdf_dict_put_drop(ctx, root, PDF_NAME_Type, PDF_NAME_Catalog); - o = pages = pdf_new_dict(ctx, doc, 3); - pdf_dict_put_drop(ctx, root, PDF_NAME_Pages, pdf_add_object(ctx, doc, o)); - pdf_drop_obj(ctx, o); - o = NULL; + pages = pdf_new_dict(ctx, doc, 3); + pdf_dict_put_drop(ctx, root, PDF_NAME_Pages, pdf_add_object_drop(ctx, doc, pages)); pdf_dict_put_drop(ctx, pages, PDF_NAME_Type, PDF_NAME_Pages); pdf_dict_put_drop(ctx, pages, PDF_NAME_Count, pdf_new_int(ctx, doc, 0)); pdf_dict_put_drop(ctx, pages, PDF_NAME_Kids, pdf_new_array(ctx, doc, 1)); @@ -2735,7 +2724,6 @@ pdf_document *pdf_create_document(fz_context *ctx) fz_catch(ctx) { pdf_drop_obj(ctx, trailer); - pdf_drop_obj(ctx, o); fz_drop_document(ctx, &doc->super); fz_rethrow(ctx); } |