diff options
author | Matt Holgate <matt@emobix.co.uk> | 2014-06-26 14:16:27 +0100 |
---|---|---|
committer | Matt Holgate <matt@emobix.co.uk> | 2014-06-26 16:53:36 +0100 |
commit | ada560eb015e7b2208c492d47f28da8093733c4a (patch) | |
tree | 00f8a4739292098fe27db5e7bc6e272d90394730 /source | |
parent | 526ab461bd85cce92d866ee5c4245a6c3636082c (diff) | |
download | mupdf-ada560eb015e7b2208c492d47f28da8093733c4a.tar.xz |
Add missing fz_var() and fix potential memory leak.
Diffstat (limited to 'source')
-rw-r--r-- | source/fitz/list-device.c | 60 |
1 files changed, 37 insertions, 23 deletions
diff --git a/source/fitz/list-device.c b/source/fitz/list-device.c index 529e0bbf..981d530f 100644 --- a/source/fitz/list-device.c +++ b/source/fitz/list-device.c @@ -557,36 +557,50 @@ fz_list_end_tile(fz_device *dev) fz_device * fz_new_list_device(fz_context *ctx, fz_display_list *list) { - fz_device *dev = fz_new_device(ctx, list); + fz_device *dev = NULL; - dev->begin_page = fz_list_begin_page; - dev->end_page = fz_list_end_page; + fz_var(list); + fz_var(dev); + fz_try(ctx) + { + dev = fz_new_device(ctx, list); + list = NULL; - dev->fill_path = fz_list_fill_path; - dev->stroke_path = fz_list_stroke_path; - dev->clip_path = fz_list_clip_path; - dev->clip_stroke_path = fz_list_clip_stroke_path; + dev->begin_page = fz_list_begin_page; + dev->end_page = fz_list_end_page; - dev->fill_text = fz_list_fill_text; - dev->stroke_text = fz_list_stroke_text; - dev->clip_text = fz_list_clip_text; - dev->clip_stroke_text = fz_list_clip_stroke_text; - dev->ignore_text = fz_list_ignore_text; + dev->fill_path = fz_list_fill_path; + dev->stroke_path = fz_list_stroke_path; + dev->clip_path = fz_list_clip_path; + dev->clip_stroke_path = fz_list_clip_stroke_path; - dev->fill_shade = fz_list_fill_shade; - dev->fill_image = fz_list_fill_image; - dev->fill_image_mask = fz_list_fill_image_mask; - dev->clip_image_mask = fz_list_clip_image_mask; + dev->fill_text = fz_list_fill_text; + dev->stroke_text = fz_list_stroke_text; + dev->clip_text = fz_list_clip_text; + dev->clip_stroke_text = fz_list_clip_stroke_text; + dev->ignore_text = fz_list_ignore_text; - dev->pop_clip = fz_list_pop_clip; + dev->fill_shade = fz_list_fill_shade; + dev->fill_image = fz_list_fill_image; + dev->fill_image_mask = fz_list_fill_image_mask; + dev->clip_image_mask = fz_list_clip_image_mask; - dev->begin_mask = fz_list_begin_mask; - dev->end_mask = fz_list_end_mask; - dev->begin_group = fz_list_begin_group; - dev->end_group = fz_list_end_group; + dev->pop_clip = fz_list_pop_clip; - dev->begin_tile = fz_list_begin_tile; - dev->end_tile = fz_list_end_tile; + dev->begin_mask = fz_list_begin_mask; + dev->end_mask = fz_list_end_mask; + dev->begin_group = fz_list_begin_group; + dev->end_group = fz_list_end_group; + + dev->begin_tile = fz_list_begin_tile; + dev->end_tile = fz_list_end_tile; + } + fz_catch(ctx) + { + fz_free_device(dev); + fz_drop_display_list(ctx, list); + fz_rethrow(ctx); + } return dev; } |