From 41826915a2abe9ef1586c7cd58ae2af9d6a07fd3 Mon Sep 17 00:00:00 2001 From: Robin Watts Date: Mon, 9 Jan 2012 11:32:04 +0000 Subject: Add fz_try/fz_catch to xpsdraw Avoid unhandled exceptions. Thanks to Zeniko for this. --- apps/xpsdraw.c | 41 +++++++++++++++++++++++++---------------- 1 file changed, 25 insertions(+), 16 deletions(-) diff --git a/apps/xpsdraw.c b/apps/xpsdraw.c index 33fb9db2..930185ae 100644 --- a/apps/xpsdraw.c +++ b/apps/xpsdraw.c @@ -284,9 +284,11 @@ int main(int argc, char **argv) { int grayscale = 0; int accelerate = 1; - xps_document *doc; + xps_document *doc = NULL; int c; + fz_var(doc); + while ((c = fz_getopt(argc, argv, "o:p:r:Aadglmtx5")) != -1) { switch (c) @@ -349,26 +351,33 @@ int main(int argc, char **argv) { filename = argv[fz_optind++]; - doc = xps_open_file(ctx, filename); + fz_try(ctx) + { + doc = xps_open_file(ctx, filename); - if (showxml) - printf("\n", filename); + if (showxml) + printf("\n", filename); - if (showoutline) - drawoutline(doc); + if (showoutline) + drawoutline(doc); - if (showtext || showxml || showtime || showmd5 || output) - { - if (fz_optind == argc || !isrange(argv[fz_optind])) - drawrange(doc, "1-"); - if (fz_optind < argc && isrange(argv[fz_optind])) - drawrange(doc, argv[fz_optind++]); - } + if (showtext || showxml || showtime || showmd5 || output) + { + if (fz_optind == argc || !isrange(argv[fz_optind])) + drawrange(doc, "1-"); + if (fz_optind < argc && isrange(argv[fz_optind])) + drawrange(doc, argv[fz_optind++]); + } - if (showxml) - printf("\n"); + if (showxml) + printf("\n"); - xps_free_context(doc); + xps_free_context(doc); + } + fz_catch(ctx) + { + xps_free_context(doc); + } } if (showtime) -- cgit v1.2.3