From 6e20012b7a9b6ad8a67b466b32f6fae98a95b11c Mon Sep 17 00:00:00 2001 From: Sebastian Rasmussen Date: Wed, 29 Aug 2018 21:22:18 +0800 Subject: Remember type of exception upon error while running xobjects. --- source/pdf/pdf-op-run.c | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) (limited to 'source') diff --git a/source/pdf/pdf-op-run.c b/source/pdf/pdf-op-run.c index 6367fff9..1ad0e610 100644 --- a/source/pdf/pdf-op-run.c +++ b/source/pdf/pdf-op-run.c @@ -1194,6 +1194,7 @@ pdf_run_xobject(fz_context *ctx, pdf_run_processor *proc, pdf_obj *xobj, pdf_obj int gparent_save; fz_matrix gparent_save_ctm; int cleanup_state = 0; + int err = FZ_ERROR_NONE; char errmess[256] = ""; pdf_obj *resources; fz_rect xobj_bbox; @@ -1314,6 +1315,7 @@ pdf_run_xobject(fz_context *ctx, pdf_run_processor *proc, pdf_obj *xobj, pdf_obj fz_catch(ctx) { /* Postpone the problem */ + err = fz_caught(ctx); strcpy(errmess, fz_caught_message(ctx)); } } @@ -1343,8 +1345,9 @@ pdf_run_xobject(fz_context *ctx, pdf_run_processor *proc, pdf_obj *xobj, pdf_obj fz_catch(ctx) { /* Postpone the problem */ - if (errmess[0]) - fz_warn(ctx, "%s", errmess); + if (err) + fz_warn(ctx, "ignoring error: %s", errmess); + err = fz_caught(ctx); strcpy(errmess, fz_caught_message(ctx)); } } @@ -1357,8 +1360,9 @@ pdf_run_xobject(fz_context *ctx, pdf_run_processor *proc, pdf_obj *xobj, pdf_obj fz_catch(ctx) { /* Postpone the problem */ - if (errmess[0]) - fz_warn(ctx, "%s", errmess); + if (err) + fz_warn(ctx, "ignoring error: %s", errmess); + err = fz_caught(ctx); strcpy(errmess, fz_caught_message(ctx)); } } @@ -1378,8 +1382,8 @@ pdf_run_xobject(fz_context *ctx, pdf_run_processor *proc, pdf_obj *xobj, pdf_obj } /* Rethrow postponed errors */ - if (errmess[0]) - fz_throw(ctx, FZ_ERROR_GENERIC, "%s", errmess); + if (err) + fz_throw(ctx, err, "%s", errmess); } /* general graphics state */ -- cgit v1.2.3