diff options
Diffstat (limited to 'source/pdf/pdf-pattern.c')
-rw-r--r-- | source/pdf/pdf-pattern.c | 38 |
1 files changed, 19 insertions, 19 deletions
diff --git a/source/pdf/pdf-pattern.c b/source/pdf/pdf-pattern.c index 93fbdd3e..32fd077c 100644 --- a/source/pdf/pdf-pattern.c +++ b/source/pdf/pdf-pattern.c @@ -16,7 +16,6 @@ static void pdf_drop_pattern_imp(fz_context *ctx, fz_storable *pat_) { pdf_pattern *pat = (pdf_pattern *)pat_; - if (pat->resources) pdf_drop_obj(ctx, pat->resources); if (pat->contents) @@ -45,38 +44,39 @@ pdf_load_pattern(fz_context *ctx, pdf_document *doc, pdf_obj *dict) pat = fz_malloc_struct(ctx, pdf_pattern); FZ_INIT_STORABLE(pat, 1, pdf_drop_pattern_imp); + pat->document = doc; pat->resources = NULL; pat->contents = NULL; - /* Store pattern now, to avoid possible recursion if objects refer back to this one */ - pdf_store_item(ctx, dict, pat, pdf_pattern_size(pat)); + fz_try(ctx) + { + /* Store pattern now, to avoid possible recursion if objects refer back to this one */ + pdf_store_item(ctx, dict, pat, pdf_pattern_size(pat)); - pat->ismask = pdf_to_int(ctx, pdf_dict_gets(ctx, dict, "PaintType")) == 2; - pat->xstep = pdf_to_real(ctx, pdf_dict_gets(ctx, dict, "XStep")); - pat->ystep = pdf_to_real(ctx, pdf_dict_gets(ctx, dict, "YStep")); + pat->ismask = pdf_to_int(ctx, pdf_dict_gets(ctx, dict, "PaintType")) == 2; + pat->xstep = pdf_to_real(ctx, pdf_dict_gets(ctx, dict, "XStep")); + pat->ystep = pdf_to_real(ctx, pdf_dict_gets(ctx, dict, "YStep")); - obj = pdf_dict_gets(ctx, dict, "BBox"); - pdf_to_rect(ctx, obj, &pat->bbox); + obj = pdf_dict_gets(ctx, dict, "BBox"); + pdf_to_rect(ctx, obj, &pat->bbox); - obj = pdf_dict_gets(ctx, dict, "Matrix"); - if (obj) - pdf_to_matrix(ctx, obj, &pat->matrix); - else - pat->matrix = fz_identity; + obj = pdf_dict_gets(ctx, dict, "Matrix"); + if (obj) + pdf_to_matrix(ctx, obj, &pat->matrix); + else + pat->matrix = fz_identity; - pat->resources = pdf_dict_gets(ctx, dict, "Resources"); - if (pat->resources) - pdf_keep_obj(ctx, pat->resources); + pat->resources = pdf_dict_gets(ctx, dict, "Resources"); + if (pat->resources) + pdf_keep_obj(ctx, pat->resources); - fz_try(ctx) - { pat->contents = pdf_keep_obj(ctx, dict); } fz_catch(ctx) { pdf_remove_item(ctx, pdf_drop_pattern_imp, dict); pdf_drop_pattern(ctx, pat); - fz_rethrow_message(ctx, "cannot load pattern stream (%d %d R)", pdf_to_num(ctx, dict), pdf_to_gen(ctx, dict)); + fz_rethrow_message(ctx, "cannot load pattern (%d %d R)", pdf_to_num(ctx, dict), pdf_to_gen(ctx, dict)); } return pat; } |