From 479abb72606f6326e7d91a448fbc472c8c3e6b09 Mon Sep 17 00:00:00 2001 From: Sebastian Rasmussen Date: Wed, 28 Jun 2017 00:54:54 +0800 Subject: Drop pdf processor graphics state upon error. --- source/pdf/pdf-op-filter.c | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) (limited to 'source') diff --git a/source/pdf/pdf-op-filter.c b/source/pdf/pdf-op-filter.c index a71f2fa7..60d3abe3 100644 --- a/source/pdf/pdf-op-filter.c +++ b/source/pdf/pdf-op-filter.c @@ -1287,12 +1287,20 @@ pdf_new_filter_processor(fz_context *ctx, pdf_processor *chain, pdf_obj *old_rdb proc->old_rdb = old_rdb; proc->new_rdb = new_rdb; - proc->gstate = fz_malloc_struct(ctx, filter_gstate); - proc->gstate->ctm = fz_identity; - proc->gstate->current_ctm = fz_identity; + fz_try(ctx) + { + proc->gstate = fz_malloc_struct(ctx, filter_gstate); + proc->gstate->ctm = fz_identity; + proc->gstate->current_ctm = fz_identity; - proc->gstate->stroke = proc->gstate->stroke; - proc->gstate->current_stroke = proc->gstate->stroke; + proc->gstate->stroke = proc->gstate->stroke; + proc->gstate->current_stroke = proc->gstate->stroke; + } + fz_catch(ctx) + { + pdf_drop_processor(ctx, (pdf_processor *) proc); + fz_rethrow(ctx); + } return (pdf_processor*)proc; } -- cgit v1.2.3