diff options
Diffstat (limited to 'fitz/res_image.c')
-rw-r--r-- | fitz/res_image.c | 20 |
1 files changed, 15 insertions, 5 deletions
diff --git a/fitz/res_image.c b/fitz/res_image.c index c8ba8257..82703b50 100644 --- a/fitz/res_image.c +++ b/fitz/res_image.c @@ -416,15 +416,25 @@ fz_new_image(fz_context *ctx, int w, int h, int bpc, fz_colorspace *colorspace, } fz_image * -fz_new_image_from_buffer(fz_context *ctx, unsigned char *buf, int len) +fz_new_image_from_data(fz_context *ctx, unsigned char *data, int len) +{ + fz_buffer *buffer = fz_new_buffer_from_data(ctx, data, len); + + return fz_new_image_from_buffer(ctx, buffer); +} + +fz_image * +fz_new_image_from_buffer(fz_context *ctx, fz_buffer *buffer) { fz_compressed_buffer *bc = NULL; int w, h, xres, yres; fz_colorspace *cspace; - unsigned char *free_buf = buf; + fz_buffer *drop_buffer = buffer; + int len = buffer->len; + unsigned char *buf = buffer->data; fz_var(bc); - fz_var(free_buf); + fz_var(drop_buffer); fz_try(ctx) { @@ -433,7 +443,7 @@ fz_new_image_from_buffer(fz_context *ctx, unsigned char *buf, int len) bc = fz_malloc_struct(ctx, fz_compressed_buffer); bc->buffer = fz_new_buffer_from_data(ctx, buf, len); - free_buf = NULL; + drop_buffer = NULL; if (buf[0] == 0xff && buf[1] == 0xd8) { @@ -458,7 +468,7 @@ fz_new_image_from_buffer(fz_context *ctx, unsigned char *buf, int len) } fz_catch(ctx) { - fz_free(ctx, free_buf); + fz_drop_buffer(ctx, drop_buffer); fz_free_compressed_buffer(ctx, bc); fz_rethrow(ctx); } |