diff options
Diffstat (limited to 'source/pdf/pdf-object.c')
-rw-r--r-- | source/pdf/pdf-object.c | 19 |
1 files changed, 10 insertions, 9 deletions
diff --git a/source/pdf/pdf-object.c b/source/pdf/pdf-object.c index b189a125..2ac8ae85 100644 --- a/source/pdf/pdf-object.c +++ b/source/pdf/pdf-object.c @@ -204,7 +204,7 @@ pdf_keep_obj(fz_context *ctx, pdf_obj *obj) if (obj >= PDF_OBJ__LIMIT) { (void)Memento_takeRef(obj); - obj->refs ++; + (void)fz_keep_imp16(ctx, obj, &obj->refs); } return obj; } @@ -1732,14 +1732,15 @@ pdf_drop_obj(fz_context *ctx, pdf_obj *obj) if (obj >= PDF_OBJ__LIMIT) { (void)Memento_dropRef(obj); - if (--obj->refs) - return; - if (obj->kind == PDF_ARRAY) - pdf_drop_array(ctx, obj); - else if (obj->kind == PDF_DICT) - pdf_drop_dict(ctx, obj); - else - fz_free(ctx, obj); + if (fz_drop_imp16(ctx, obj, &obj->refs)) + { + if (obj->kind == PDF_ARRAY) + pdf_drop_array(ctx, obj); + else if (obj->kind == PDF_DICT) + pdf_drop_dict(ctx, obj); + else + fz_free(ctx, obj); + } } } |