summaryrefslogtreecommitdiff
path: root/source/pdf/pdf-cmap-load.c
diff options
context:
space:
mode:
authorTor Andersson <tor.andersson@artifex.com>2016-04-27 17:00:29 +0200
committerTor Andersson <tor.andersson@artifex.com>2016-04-27 17:01:06 +0200
commit29d53a0a460e00b3ec9dda508adbd2964077ab27 (patch)
tree1576b7808c03324739e56cdae57cd3a92d57b679 /source/pdf/pdf-cmap-load.c
parent4d9c36cfe000caeaf3dcc79f4ed004e0595975e4 (diff)
downloadmupdf-29d53a0a460e00b3ec9dda508adbd2964077ab27.tar.xz
Fix 696649: remove fz_rethrow_message calls.
Diffstat (limited to 'source/pdf/pdf-cmap-load.c')
-rw-r--r--source/pdf/pdf-cmap-load.c57
1 files changed, 20 insertions, 37 deletions
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;