diff options
author | Tor Andersson <tor.andersson@artifex.com> | 2016-03-01 23:24:20 +0100 |
---|---|---|
committer | Tor Andersson <tor.andersson@artifex.com> | 2016-03-02 00:31:28 +0100 |
commit | 309cdf7a191550a31b2fc8cbbadc214a34d4b1a8 (patch) | |
tree | 1e425f9b6fa56673276a10daafb5f5e95fb4e62d /source/tools | |
parent | 387a22dbe47a7122395f3b29eaaf3e8417864452 (diff) | |
download | mupdf-309cdf7a191550a31b2fc8cbbadc214a34d4b1a8.tar.xz |
js: Fix reference counting errors.
Diffstat (limited to 'source/tools')
-rw-r--r-- | source/tools/murun.c | 15 |
1 files changed, 7 insertions, 8 deletions
diff --git a/source/tools/murun.c b/source/tools/murun.c index ba98263f..e18670da 100644 --- a/source/tools/murun.c +++ b/source/tools/murun.c @@ -621,7 +621,7 @@ static int ffi_pdf_obj_has(js_State *J, void *obj, const char *key) rethrow(J); } if (val) { - ffi_pushobj(J, val); + ffi_pushobj(J, pdf_keep_obj(ctx, val)); return 1; } return 0; @@ -680,10 +680,9 @@ static int ffi_pdf_obj_delete(js_State *J, void *obj, const char *key) static void ffi_pushobj(js_State *J, pdf_obj *obj) { - fz_context *ctx = js_getcontext(J); if (obj) { js_getregistry(J, "pdf_obj"); - js_newuserdatax(J, "pdf_obj", pdf_keep_obj(ctx, obj), + js_newuserdatax(J, "pdf_obj", obj, ffi_pdf_obj_has, ffi_pdf_obj_put, ffi_pdf_obj_delete, ffi_gc_pdf_obj); } else { @@ -2160,7 +2159,7 @@ static void ffi_PDFDocument_getTrailer(js_State *J) fz_catch(ctx) rethrow(J); - ffi_pushobj(J, trailer); + ffi_pushobj(J, pdf_keep_obj(ctx, trailer)); } static void ffi_PDFDocument_addObject(js_State *J) @@ -2171,7 +2170,7 @@ static void ffi_PDFDocument_addObject(js_State *J) pdf_obj *ind; fz_try(ctx) - ind = pdf_add_object(ctx, pdf, obj); + ind = pdf_add_object_drop(ctx, pdf, obj); fz_catch(ctx) rethrow(J); @@ -2350,12 +2349,12 @@ static void ffi_PDFObject_resolve(js_State *J) { fz_context *ctx = js_getcontext(J); pdf_obj *obj = js_touserdata(J, 0, "pdf_obj"); - pdf_obj *res; + pdf_obj *ind; fz_try(ctx) - res = pdf_resolve_indirect(ctx, obj); + ind = pdf_resolve_indirect(ctx, obj); fz_catch(ctx) rethrow(J); - ffi_pushobj(J, res); + ffi_pushobj(J, pdf_keep_obj(ctx, ind)); } static void ffi_PDFObject_toString(js_State *J) |