summaryrefslogtreecommitdiff
path: root/source/fitz/font.c
diff options
context:
space:
mode:
authorSebastian Rasmussen <sebras@gmail.com>2017-06-11 23:11:42 +0800
committerSebastian Rasmussen <sebras@gmail.com>2017-09-07 21:02:53 +0800
commit8cb0a389794356d7b6624f78365a5e92efdeb8e8 (patch)
treef05e3442351a46af3e4d5209f8b754c6b33f948f /source/fitz/font.c
parenta27d9903ec238af6e4c1c59de1e1dae817b4f028 (diff)
downloadmupdf-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.c17
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