diff options
author | Sebastian Rasmussen <sebras@gmail.com> | 2017-06-11 23:11:42 +0800 |
---|---|---|
committer | Sebastian Rasmussen <sebras@gmail.com> | 2017-09-07 21:02:53 +0800 |
commit | 8cb0a389794356d7b6624f78365a5e92efdeb8e8 (patch) | |
tree | f05e3442351a46af3e4d5209f8b754c6b33f948f /source/fitz/font.c | |
parent | a27d9903ec238af6e4c1c59de1e1dae817b4f028 (diff) | |
download | mupdf-8cb0a389794356d7b6624f78365a5e92efdeb8e8.tar.xz |
Make sure to always drop a fz_device even upon error.
Diffstat (limited to 'source/fitz/font.c')
-rw-r--r-- | source/fitz/font.c | 17 |
1 files changed, 11 insertions, 6 deletions
diff --git a/source/fitz/font.c b/source/fitz/font.c index 9a113460..9044b26b 100644 --- a/source/fitz/font.c +++ b/source/fitz/font.c @@ -1274,12 +1274,17 @@ fz_prepare_t3_glyph(fz_context *ctx, fz_font *font, int gid, int nested_depth) FZ_DEVFLAG_LINEJOIN_UNDEFINED | FZ_DEVFLAG_MITERLIMIT_UNDEFINED | FZ_DEVFLAG_LINEWIDTH_UNDEFINED; - font->t3run(ctx, font->t3doc, font->t3resources, contents, dev, &fz_identity, NULL, 0); - fz_close_device(ctx, dev); - font->t3flags[gid] = dev->flags; - d1_rect = dev->d1_rect; - fz_drop_device(ctx, dev); - dev = NULL; + fz_try(ctx) + { + font->t3run(ctx, font->t3doc, font->t3resources, contents, dev, &fz_identity, NULL, 0); + fz_close_device(ctx, dev); + font->t3flags[gid] = dev->flags; + d1_rect = dev->d1_rect; + } + fz_always(ctx) + fz_drop_device(ctx, dev); + fz_catch(ctx) + fz_rethrow(ctx); if (fz_display_list_is_empty(ctx, font->t3lists[gid])) { /* If empty, no need for a huge bbox, especially as the logic |