From 29d53a0a460e00b3ec9dda508adbd2964077ab27 Mon Sep 17 00:00:00 2001 From: Tor Andersson Date: Wed, 27 Apr 2016 17:00:29 +0200 Subject: Fix 696649: remove fz_rethrow_message calls. --- source/pdf/pdf-cmap-load.c | 57 ++++++++++++++++------------------------------ 1 file changed, 20 insertions(+), 37 deletions(-) (limited to 'source/pdf/pdf-cmap-load.c') diff --git a/source/pdf/pdf-cmap-load.c b/source/pdf/pdf-cmap-load.c index 159c4e6f..525c0dc1 100644 --- a/source/pdf/pdf-cmap-load.c +++ b/source/pdf/pdf-cmap-load.c @@ -22,74 +22,57 @@ pdf_load_embedded_cmap(fz_context *ctx, pdf_document *doc, pdf_obj *stmobj) { fz_stream *file = NULL; pdf_cmap *cmap = NULL; - pdf_cmap *usecmap; - pdf_obj *wmode; - pdf_obj *obj = NULL; - int phase = 0; + pdf_cmap *usecmap = NULL; + pdf_obj *obj; - fz_var(phase); - fz_var(obj); fz_var(file); fz_var(cmap); + fz_var(usecmap); if (pdf_obj_marked(ctx, stmobj)) fz_throw(ctx, FZ_ERROR_GENERIC, "Recursion in embedded cmap"); if ((cmap = pdf_find_item(ctx, pdf_drop_cmap_imp, stmobj)) != NULL) - { return cmap; - } fz_try(ctx) { file = pdf_open_stream(ctx, doc, pdf_to_num(ctx, stmobj), pdf_to_gen(ctx, stmobj)); - phase = 1; cmap = pdf_load_cmap(ctx, file); - phase = 2; - fz_drop_stream(ctx, file); - file = NULL; - wmode = pdf_dict_get(ctx, stmobj, PDF_NAME_WMode); - if (pdf_is_int(ctx, wmode)) - pdf_set_cmap_wmode(ctx, cmap, pdf_to_int(ctx, wmode)); + obj = pdf_dict_get(ctx, stmobj, PDF_NAME_WMode); + if (pdf_is_int(ctx, obj)) + pdf_set_cmap_wmode(ctx, cmap, pdf_to_int(ctx, obj)); + obj = pdf_dict_get(ctx, stmobj, PDF_NAME_UseCMap); if (pdf_is_name(ctx, obj)) { usecmap = pdf_load_system_cmap(ctx, pdf_to_name(ctx, obj)); pdf_set_usecmap(ctx, cmap, usecmap); - pdf_drop_cmap(ctx, usecmap); } else if (pdf_is_indirect(ctx, obj)) { - phase = 3; pdf_mark_obj(ctx, obj); - usecmap = pdf_load_embedded_cmap(ctx, doc, obj); - pdf_unmark_obj(ctx, obj); - phase = 4; + fz_try(ctx) + usecmap = pdf_load_embedded_cmap(ctx, doc, obj); + fz_always(ctx) + pdf_unmark_obj(ctx, obj); + fz_catch(ctx) + fz_rethrow(ctx); pdf_set_usecmap(ctx, cmap, usecmap); - pdf_drop_cmap(ctx, usecmap); } pdf_store_item(ctx, stmobj, cmap, pdf_cmap_size(ctx, cmap)); } + fz_always(ctx) + { + fz_drop_stream(ctx, file); + pdf_drop_cmap(ctx, usecmap); + } fz_catch(ctx) { - if (file) - fz_drop_stream(ctx, file); - if (cmap) - pdf_drop_cmap(ctx, cmap); - if (phase < 1) - fz_rethrow_message(ctx, "cannot open cmap stream (%d %d R)", pdf_to_num(ctx, stmobj), pdf_to_gen(ctx, stmobj)); - else if (phase < 2) - fz_rethrow_message(ctx, "cannot parse cmap stream (%d %d R)", pdf_to_num(ctx, stmobj), pdf_to_gen(ctx, stmobj)); - else if (phase < 3) - fz_rethrow_message(ctx, "cannot load system usecmap '%s'", pdf_to_name(ctx, obj)); - else - { - if (phase == 3) - pdf_unmark_obj(ctx, obj); - fz_rethrow_message(ctx, "cannot load embedded usecmap (%d %d R)", pdf_to_num(ctx, obj), pdf_to_gen(ctx, obj)); - } + pdf_drop_cmap(ctx, cmap); + fz_rethrow(ctx); } return cmap; -- cgit v1.2.3