summaryrefslogtreecommitdiff
path: root/source
diff options
context:
space:
mode:
authorSebastian Rasmussen <sebras@gmail.com>2018-08-12 04:14:03 +0800
committerSebastian Rasmussen <sebras@gmail.com>2018-08-14 20:56:39 +0800
commit8aa2bd34065d2844aae778bd4cc20c74bbcd9406 (patch)
tree330fd9aefd7a5bfaa1cb8f3f3f38044e17c1d677 /source
parent199668e936ba87e2f9d88562d83b89dc3cc40a5a (diff)
downloadmupdf-8aa2bd34065d2844aae778bd4cc20c74bbcd9406.tar.xz
Bug 698887: Fix leak of device/pixmap when rendering fails.
Diffstat (limited to 'source')
-rw-r--r--source/fitz/util.c11
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);