summaryrefslogtreecommitdiff
path: root/source
diff options
context:
space:
mode:
Diffstat (limited to 'source')
-rw-r--r--source/pdf/pdf-nametree.c22
-rw-r--r--source/pdf/pdf-op-run.c8
2 files changed, 20 insertions, 10 deletions
diff --git a/source/pdf/pdf-nametree.c b/source/pdf/pdf-nametree.c
index a3b7acb0..178f1cea 100644
--- a/source/pdf/pdf-nametree.c
+++ b/source/pdf/pdf-nametree.c
@@ -29,8 +29,12 @@ pdf_lookup_name_imp(fz_context *ctx, pdf_obj *node, pdf_obj *needle)
if (pdf_mark_obj(ctx, node))
break;
- obj = pdf_lookup_name_imp(ctx, kid, needle);
- pdf_unmark_obj(ctx, node);
+ fz_try(ctx)
+ obj = pdf_lookup_name_imp(ctx, kid, needle);
+ fz_always(ctx)
+ pdf_unmark_obj(ctx, node);
+ fz_catch(ctx)
+ fz_rethrow(ctx);
return obj;
}
}
@@ -114,10 +118,16 @@ pdf_load_name_tree_imp(fz_context *ctx, pdf_obj *dict, pdf_document *doc, pdf_ob
if (kids && !pdf_mark_obj(ctx, node))
{
- int len = pdf_array_len(ctx, kids);
- for (i = 0; i < len; i++)
- pdf_load_name_tree_imp(ctx, dict, doc, pdf_array_get(ctx, kids, i));
- pdf_unmark_obj(ctx, node);
+ fz_try(ctx)
+ {
+ int len = pdf_array_len(ctx, kids);
+ for (i = 0; i < len; i++)
+ pdf_load_name_tree_imp(ctx, dict, doc, pdf_array_get(ctx, kids, i));
+ }
+ fz_always(ctx)
+ pdf_unmark_obj(ctx, node);
+ fz_catch(ctx)
+ fz_rethrow(ctx);
}
if (names)
diff --git a/source/pdf/pdf-op-run.c b/source/pdf/pdf-op-run.c
index 00d1957d..29031657 100644
--- a/source/pdf/pdf-op-run.c
+++ b/source/pdf/pdf-op-run.c
@@ -1230,10 +1230,6 @@ pdf_run_xobject(fz_context *ctx, pdf_run_processor *proc, pdf_xobject *xobj, pdf
if (xobj == NULL || pdf_mark_obj(ctx, xobj->obj))
return;
- pdf_xobject_bbox(ctx, xobj, &xobj_bbox);
- pdf_xobject_matrix(ctx, xobj, &xobj_matrix);
- transparency = pdf_xobject_transparency(ctx, xobj);
-
fz_var(cleanup_state);
fz_var(gstate);
fz_var(oldtop);
@@ -1248,6 +1244,10 @@ pdf_run_xobject(fz_context *ctx, pdf_run_processor *proc, pdf_xobject *xobj, pdf
gstate = pr->gstate + pr->gtop;
oldtop = pr->gtop;
+ pdf_xobject_bbox(ctx, xobj, &xobj_bbox);
+ pdf_xobject_matrix(ctx, xobj, &xobj_matrix);
+ transparency = pdf_xobject_transparency(ctx, xobj);
+
/* apply xobject's transform matrix */
fz_concat(&local_transform, &xobj_matrix, &local_transform);
fz_concat(&gstate->ctm, &local_transform, &gstate->ctm);