diff options
-rw-r--r-- | include/mupdf/pdf/object.h | 2 | ||||
-rw-r--r-- | source/pdf/pdf-object.c | 23 | ||||
-rw-r--r-- | source/pdf/pdf-write.c | 2 |
3 files changed, 6 insertions, 21 deletions
diff --git a/include/mupdf/pdf/object.h b/include/mupdf/pdf/object.h index 5c92b906..2a98ac95 100644 --- a/include/mupdf/pdf/object.h +++ b/include/mupdf/pdf/object.h @@ -101,7 +101,7 @@ int pdf_array_contains(fz_context *ctx, pdf_obj *array, pdf_obj *obj); int pdf_dict_len(fz_context *ctx, pdf_obj *dict); pdf_obj *pdf_dict_get_key(fz_context *ctx, pdf_obj *dict, int idx); pdf_obj *pdf_dict_get_val(fz_context *ctx, pdf_obj *dict, int idx); -void pdf_dict_put_val_drop(fz_context *ctx, pdf_obj *obj, int i, pdf_obj *new_obj); +void pdf_dict_put_val_null(fz_context *ctx, pdf_obj *obj, int idx); pdf_obj *pdf_dict_get(fz_context *ctx, pdf_obj *dict, pdf_obj *key); pdf_obj *pdf_dict_getp(fz_context *ctx, pdf_obj *dict, const char *path); pdf_obj *pdf_dict_getl(fz_context *ctx, pdf_obj *dict, ...); diff --git a/source/pdf/pdf-object.c b/source/pdf/pdf-object.c index f78fbadd..2b0526bd 100644 --- a/source/pdf/pdf-object.c +++ b/source/pdf/pdf-object.c @@ -1051,31 +1051,16 @@ pdf_dict_get_val(fz_context *ctx, pdf_obj *obj, int i) } void -pdf_dict_put_val(fz_context *ctx, pdf_obj *obj, int i, pdf_obj *val) +pdf_dict_put_val_null(fz_context *ctx, pdf_obj *obj, int idx) { RESOLVE(obj); if (!OBJ_IS_DICT(obj)) fz_throw(ctx, FZ_ERROR_GENERIC, "not a dict (%s)", pdf_objkindstr(obj)); - /* FIXME: Should probably extend the dict here */ - if (i < 0 || i >= DICT(obj)->len) + if (idx < 0 || idx >= DICT(obj)->len) fz_throw(ctx, FZ_ERROR_GENERIC, "index out of bounds"); - if (!val) - val = PDF_OBJ_NULL; - - pdf_drop_obj(ctx, DICT(obj)->items[i].v); - DICT(obj)->items[i].v = pdf_keep_obj(ctx, val); -} - -void -pdf_dict_put_val_drop(fz_context *ctx, pdf_obj *obj, int i, pdf_obj *val) -{ - fz_try(ctx) - pdf_dict_put_val(ctx, obj, i, val); - fz_always(ctx) - pdf_drop_obj(ctx, val); - fz_catch(ctx) - fz_rethrow(ctx); + pdf_drop_obj(ctx, DICT(obj)->items[idx].v); + DICT(obj)->items[idx].v = PDF_OBJ_NULL; } /* Returns 0 <= i < len for key found. Returns -1-len < i <= -1 for key diff --git a/source/pdf/pdf-write.c b/source/pdf/pdf-write.c index 224da50c..ae2f4122 100644 --- a/source/pdf/pdf-write.c +++ b/source/pdf/pdf-write.c @@ -608,7 +608,7 @@ static int markobj(fz_context *ctx, pdf_document *doc, pdf_write_state *opts, pd { DEBUGGING_MARKING(indent(); printf("DICT[%d/%d] = %s\n", i, n, pdf_to_name(ctx, pdf_dict_get_key(ctx, obj, i)))); if (markobj(ctx, doc, opts, pdf_dict_get_val(ctx, obj, i))) - pdf_dict_put_val_drop(ctx, obj, i, pdf_new_null(ctx, doc)); + pdf_dict_put_val_null(ctx, obj, i); } } |