From 460709048cdaa40fd97c59969fee1cecbebd9767 Mon Sep 17 00:00:00 2001 From: Sebastian Rasmussen Date: Mon, 19 Jun 2017 01:12:18 +0800 Subject: html: Drop buffers in case of error. --- source/html/html-layout.c | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) (limited to 'source/html') diff --git a/source/html/html-layout.c b/source/html/html-layout.c index 5b514760..488f6f38 100644 --- a/source/html/html-layout.c +++ b/source/html/html-layout.c @@ -2308,14 +2308,26 @@ load_fb2_images(fz_context *ctx, fz_xml *root) for (binary = fz_xml_find_down(fictionbook, "binary"); binary; binary = fz_xml_find_next(binary, "binary")) { const char *id = fz_xml_att(binary, "id"); - char *b64 = concat_text(ctx, binary); + char *b64; fz_buffer *buf; fz_image *img; - buf = fz_new_buffer_from_base64(ctx, b64, strlen(b64)); - img = fz_new_image_from_buffer(ctx, buf); - fz_drop_buffer(ctx, buf); - fz_free(ctx, b64); + fz_var(b64); + fz_var(buf); + + fz_try(ctx) + { + b64 = concat_text(ctx, binary); + buf = fz_new_buffer_from_base64(ctx, b64, strlen(b64)); + img = fz_new_image_from_buffer(ctx, buf); + } + fz_always(ctx) + { + fz_drop_buffer(ctx, buf); + fz_free(ctx, b64); + } + fz_catch(ctx) + fz_rethrow(ctx); images = fz_tree_insert(ctx, images, id, img); } -- cgit v1.2.3