diff options
Diffstat (limited to 'source')
-rw-r--r-- | source/pdf/pdf-op-filter.c | 18 |
1 files changed, 13 insertions, 5 deletions
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; } |