diff options
author | Sebastian Rasmussen <sebras@gmail.com> | 2018-08-12 04:14:03 +0800 |
---|---|---|
committer | Sebastian Rasmussen <sebras@gmail.com> | 2018-08-14 20:56:39 +0800 |
commit | 8aa2bd34065d2844aae778bd4cc20c74bbcd9406 (patch) | |
tree | 330fd9aefd7a5bfaa1cb8f3f3f38044e17c1d677 | |
parent | 199668e936ba87e2f9d88562d83b89dc3cc40a5a (diff) | |
download | mupdf-8aa2bd34065d2844aae778bd4cc20c74bbcd9406.tar.xz |
Bug 698887: Fix leak of device/pixmap when rendering fails.
-rw-r--r-- | source/fitz/util.c | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/source/fitz/util.c b/source/fitz/util.c index aea89144..8f0d9f62 100644 --- a/source/fitz/util.c +++ b/source/fitz/util.c @@ -217,18 +217,21 @@ fz_new_pixmap_from_page(fz_context *ctx, fz_page *page, fz_matrix ctm, fz_colors fz_pixmap *pix; fz_device *dev = NULL; + fz_var(dev); + rect = fz_bound_page(ctx, page); rect = fz_transform_rect(rect, ctm); bbox = fz_round_rect(rect); pix = fz_new_pixmap_with_bbox(ctx, cs, bbox, 0, alpha); - if (alpha) - fz_clear_pixmap(ctx, pix); - else - fz_clear_pixmap_with_value(ctx, pix, 0xFF); fz_try(ctx) { + if (alpha) + fz_clear_pixmap(ctx, pix); + else + fz_clear_pixmap_with_value(ctx, pix, 0xFF); + dev = fz_new_draw_device(ctx, ctm, pix); fz_run_page(ctx, page, dev, fz_identity, NULL); fz_close_device(ctx, dev); |