summaryrefslogtreecommitdiff
path: root/source/pdf/pdf-object.c
diff options
context:
space:
mode:
Diffstat (limited to 'source/pdf/pdf-object.c')
-rw-r--r--source/pdf/pdf-object.c26
1 files changed, 26 insertions, 0 deletions
diff --git a/source/pdf/pdf-object.c b/source/pdf/pdf-object.c
index d4b008fb..1a0b9abf 100644
--- a/source/pdf/pdf-object.c
+++ b/source/pdf/pdf-object.c
@@ -566,6 +566,13 @@ pdf_array_put(fz_context *ctx, pdf_obj *obj, int i, pdf_obj *item)
}
void
+pdf_array_put_drop(fz_context *ctx, pdf_obj *obj, int i, pdf_obj *item)
+{
+ pdf_array_put(ctx, obj, i, item);
+ pdf_drop_obj(ctx, item);
+}
+
+void
pdf_array_push(fz_context *ctx, pdf_obj *obj, pdf_obj *item)
{
RESOLVE(obj);
@@ -880,6 +887,25 @@ pdf_dict_get_val(fz_context *ctx, pdf_obj *obj, int i)
return obj->u.d.items[i].v;
}
+void
+pdf_dict_put_val_drop(fz_context *ctx, pdf_obj *obj, int i, pdf_obj *new_obj)
+{
+ RESOLVE(obj);
+ if (!obj || obj->kind != PDF_DICT)
+ {
+ pdf_drop_obj(ctx, new_obj);
+ return;
+ }
+ if (i < 0 || i >= obj->u.d.len)
+ {
+ /* FIXME: Should probably extend the dict here */
+ pdf_drop_obj(ctx, new_obj);
+ return;
+ }
+ pdf_drop_obj(ctx, obj->u.d.items[i].v);
+ obj->u.d.items[i].v = new_obj;
+}
+
static int
pdf_dict_finds(fz_context *ctx, pdf_obj *obj, const char *key, int *location)
{