diff options
Diffstat (limited to 'source/tools')
-rw-r--r-- | source/tools/muconvert.c | 2 | ||||
-rw-r--r-- | source/tools/mudraw.c | 11 | ||||
-rw-r--r-- | source/tools/muraster.c | 9 | ||||
-rw-r--r-- | source/tools/murun.c | 18 |
4 files changed, 27 insertions, 13 deletions
diff --git a/source/tools/muconvert.c b/source/tools/muconvert.c index 95f01c4a..4fb3b071 100644 --- a/source/tools/muconvert.c +++ b/source/tools/muconvert.c @@ -162,6 +162,8 @@ int muconvert_main(int argc, char **argv) fz_drop_document(ctx, doc); } + fz_close_document_writer(ctx, out); + fz_drop_document_writer(ctx, out); fz_drop_context(ctx); return EXIT_SUCCESS; diff --git a/source/tools/mudraw.c b/source/tools/mudraw.c index 0521a9b0..16e12b6b 100644 --- a/source/tools/mudraw.c +++ b/source/tools/mudraw.c @@ -554,6 +554,7 @@ static void drawband(fz_context *ctx, fz_page *page, fz_display_list *list, cons fz_run_display_list(ctx, list, dev, ctm, tbounds, cookie); else fz_run_page(ctx, page, dev, ctm, cookie); + fz_close_device(ctx, dev); fz_drop_device(ctx, dev); dev = NULL; @@ -596,6 +597,7 @@ static void dodrawpage(fz_context *ctx, fz_page *page, fz_display_list *list, in else fz_run_page(ctx, page, dev, &fz_identity, cookie); fz_printf(ctx, out, "</page>\n"); + fz_close_device(ctx, dev); } fz_always(ctx) { @@ -628,6 +630,7 @@ static void dodrawpage(fz_context *ctx, fz_page *page, fz_display_list *list, in fz_run_display_list(ctx, list, dev, &fz_identity, &fz_infinite_rect, cookie); else fz_run_page(ctx, page, dev, &fz_identity, cookie); + fz_close_device(ctx, dev); fz_drop_device(ctx, dev); dev = NULL; if (output_format == OUT_STEXT) @@ -674,6 +677,7 @@ static void dodrawpage(fz_context *ctx, fz_page *page, fz_display_list *list, in fz_run_display_list(ctx, list, dev, &fz_identity, NULL, cookie); else fz_run_page(ctx, page, dev, &fz_identity, cookie); + fz_close_device(ctx, dev); page_obj = pdf_add_page(ctx, pdfout, &mediabox, rotation, resources, contents); pdf_insert_page(ctx, pdfout, -1, page_obj); @@ -726,6 +730,7 @@ static void dodrawpage(fz_context *ctx, fz_page *page, fz_display_list *list, in fz_run_display_list(ctx, list, dev, &ctm, &tbounds, cookie); else fz_run_page(ctx, page, dev, &ctm, cookie); + fz_close_device(ctx, dev); fz_drop_device(ctx, dev); dev = NULL; } @@ -754,10 +759,8 @@ static void dodrawpage(fz_context *ctx, fz_page *page, fz_display_list *list, in fz_ps_output_context *psoc = NULL; fz_mono_pcl_output_context *pmcoc = NULL; fz_color_pcl_output_context *pccoc = NULL; - fz_device *dev = NULL; fz_bitmap *bit = NULL; - fz_var(dev); fz_var(pix); fz_var(poc); fz_var(psoc); @@ -991,8 +994,6 @@ static void dodrawpage(fz_context *ctx, fz_page *page, fz_display_list *list, in { fz_drop_bitmap(ctx, bit); bit = NULL; - fz_drop_device(ctx, dev); - dev = NULL; if (num_workers > 0) { int band; @@ -1121,6 +1122,7 @@ static void drawpage(fz_context *ctx, fz_document *doc, int pagenum) if (lowmemory) fz_enable_device_hints(ctx, dev, FZ_NO_CACHE); fz_run_page(ctx, page, dev, &fz_identity, &cookie); + fz_close_device(ctx, dev); } fz_always(ctx) { @@ -1153,6 +1155,7 @@ static void drawpage(fz_context *ctx, fz_document *doc, int pagenum) fz_run_display_list(ctx, list, dev, &fz_identity, &fz_infinite_rect, NULL); else fz_run_page(ctx, page, dev, &fz_identity, &cookie); + fz_close_device(ctx, dev); } fz_always(ctx) { diff --git a/source/tools/muraster.c b/source/tools/muraster.c index e5d886f4..6a2cf87e 100644 --- a/source/tools/muraster.c +++ b/source/tools/muraster.c @@ -710,6 +710,7 @@ static int drawband(fz_context *ctx, fz_page *page, fz_display_list *list, const fz_run_display_list(ctx, list, dev, ctm, tbounds, cookie); else fz_run_page(ctx, page, dev, ctm, cookie); + fz_close_device(ctx, dev); fz_drop_device(ctx, dev); dev = NULL; @@ -726,12 +727,10 @@ static int drawband(fz_context *ctx, fz_page *page, fz_display_list *list, const static int dodrawpage(fz_context *ctx, int pagenum, fz_cookie *cookie, render_details *render) { - fz_device *dev = NULL; fz_pixmap *pix = NULL; fz_bitmap *bit = NULL; int errors_are_fatal = 0; - fz_var(dev); fz_var(pix); fz_var(bit); fz_var(errors_are_fatal); @@ -852,8 +851,6 @@ static int dodrawpage(fz_context *ctx, int pagenum, fz_cookie *cookie, render_de { fz_drop_bitmap(ctx, bit); bit = NULL; - fz_drop_device(ctx, dev); - dev = NULL; if (render->num_workers > 0) { int band; @@ -1198,9 +1195,11 @@ static void drawpage(fz_context *ctx, fz_document *doc, int pagenum) #if GREY_FALLBACK != 0 test_dev = fz_new_test_device(ctx, &is_color, 0.01f, 0, list_dev); fz_run_page(ctx, page, test_dev, &fz_identity, &cookie); + fz_close_device(ctx, test_dev); #else fz_run_page(ctx, page, list_dev, &fz_identity, &cookie); #endif + fz_close_device(ctx, list_dev); } fz_always(ctx) { @@ -1229,6 +1228,7 @@ static void drawpage(fz_context *ctx, fz_document *doc, int pagenum) { test_dev = fz_new_test_device(ctx, &is_color, 0.01f, 0, test_dev); fz_run_page(ctx, page, test_dev, &fz_identity, &cookie); + fz_close_device(ctx, test_dev); } fz_always(ctx) { @@ -1258,6 +1258,7 @@ static void drawpage(fz_context *ctx, fz_document *doc, int pagenum) fz_run_display_list(ctx, list, test_dev, &fz_identity, &fz_infinite_rect, &cookie); else fz_run_page(ctx, page, test_dev, &fz_identity, &cookie); + fz_close_device(ctx, test_dev); } fz_always(ctx) { diff --git a/source/tools/murun.c b/source/tools/murun.c index a3eacaa8..fb35f0a0 100644 --- a/source/tools/murun.c +++ b/source/tools/murun.c @@ -178,7 +178,10 @@ static const char *require_js = static void ffi_gc_fz_buffer(js_State *J, void *buf) { fz_context *ctx = js_getcontext(J); - fz_drop_buffer(ctx, buf); + fz_try(ctx) + fz_drop_buffer(ctx, buf); + fz_catch(ctx) + rethrow(J); } static void ffi_gc_fz_document(js_State *J, void *doc) @@ -1497,11 +1500,13 @@ static void ffi_Page_run(js_State *J) } else { device = new_js_device(ctx, J); js_copy(J, 1); /* put the js device on the top so the callbacks know where to get it */ - fz_try(ctx) + fz_try(ctx) { if (no_annots) fz_run_page_contents(ctx, page, device, &ctm, NULL); else fz_run_page(ctx, page, device, &ctm, NULL); + fz_close_device(ctx, device); + } fz_always(ctx) fz_drop_device(ctx, device); fz_catch(ctx) @@ -1650,8 +1655,10 @@ static void ffi_Annotation_run(js_State *J) } else { device = new_js_device(ctx, J); js_copy(J, 1); /* put the js device on the top so the callbacks know where to get it */ - fz_try(ctx) + fz_try(ctx) { fz_run_annot(ctx, annot, device, &ctm, NULL); + fz_close_device(ctx, device); + } fz_always(ctx) fz_drop_device(ctx, device); fz_catch(ctx) @@ -2213,8 +2220,10 @@ static void ffi_DisplayList_run(js_State *J) } else { device = new_js_device(ctx, J); js_copy(J, 1); - fz_try(ctx) + fz_try(ctx) { fz_run_display_list(ctx, list, device, &ctm, NULL, NULL); + fz_close_device(ctx, device); + } fz_always(ctx) fz_drop_device(ctx, device); fz_catch(ctx) @@ -2418,7 +2427,6 @@ static void ffi_DocumentWriter_endPage(js_State *J) rethrow(J); } - static void ffi_DocumentWriter_close(js_State *J) { fz_context *ctx = js_getcontext(J); |