summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSebastian Rasmussen <sebras@gmail.com>2017-06-19 01:12:18 +0800
committerSebastian Rasmussen <sebras@gmail.com>2017-06-29 19:24:20 +0800
commit460709048cdaa40fd97c59969fee1cecbebd9767 (patch)
treec1d59c2d56a61bb8a9888879f7a84af04cfdd0d1
parent485cf5ed4529828e4648e2c69ee64de17bf11ec2 (diff)
downloadmupdf-460709048cdaa40fd97c59969fee1cecbebd9767.tar.xz
html: Drop buffers in case of error.
-rw-r--r--source/html/html-layout.c22
1 files changed, 17 insertions, 5 deletions
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);
}