From b5c4bee884e9c4a5f988d21cec22abd9ddd0edcf Mon Sep 17 00:00:00 2001 From: Tor Andersson Date: Wed, 11 Oct 2017 16:36:19 +0200 Subject: Fix bug in murun when creating buffers from strings. The code only worked for string literals, not garbage collected or short strings. --- source/fitz/buffer.c | 9 +++++++++ source/tools/murun.c | 2 +- 2 files changed, 10 insertions(+), 1 deletion(-) (limited to 'source') diff --git a/source/fitz/buffer.c b/source/fitz/buffer.c index a43ff296..7068803a 100644 --- a/source/fitz/buffer.c +++ b/source/fitz/buffer.c @@ -67,6 +67,15 @@ fz_new_buffer_from_shared_data(fz_context *ctx, const unsigned char *data, size_ return b; } +fz_buffer * +fz_new_buffer_from_copied_data(fz_context *ctx, const unsigned char *data, size_t size) +{ + fz_buffer *b = fz_new_buffer(ctx, size); + b->len = size; + memcpy(b->data, data, size); + return b; +} + fz_buffer * fz_new_buffer_from_base64(fz_context *ctx, const char *data, size_t size) { diff --git a/source/tools/murun.c b/source/tools/murun.c index dd93b138..5925ba4f 100644 --- a/source/tools/murun.c +++ b/source/tools/murun.c @@ -763,7 +763,7 @@ static fz_buffer *ffi_tobuffer(js_State *J, int idx) else { const char *str = js_tostring(J, idx); fz_try(ctx) - buf = fz_new_buffer_from_shared_data(ctx, (const unsigned char *)str, strlen(str)); + buf = fz_new_buffer_from_copied_data(ctx, (const unsigned char *)str, strlen(str)); fz_catch(ctx) rethrow(J); } -- cgit v1.2.3