diff options
author | Tor Andersson <tor.andersson@artifex.com> | 2016-02-24 17:06:00 +0100 |
---|---|---|
committer | Tor Andersson <tor.andersson@artifex.com> | 2016-02-29 15:56:45 +0100 |
commit | 2b65dae7e2ae091c03ffe0811aa4e60457a4cd84 (patch) | |
tree | 57593ffc1d970bf67608e5137df3630ed154b31e /source/fitz/buffer.c | |
parent | 63c0874392c5159e251514db48891500e9854c5d (diff) | |
download | mupdf-2b65dae7e2ae091c03ffe0811aa4e60457a4cd84.tar.xz |
Pass fz_font to pdf_add_xxx_font_res instead of a fz_buffer.
Make sure all fz_fonts have a ft_buffer available.
Diffstat (limited to 'source/fitz/buffer.c')
-rw-r--r-- | source/fitz/buffer.c | 21 |
1 files changed, 20 insertions, 1 deletions
diff --git a/source/fitz/buffer.c b/source/fitz/buffer.c index 86947df0..d1609ef1 100644 --- a/source/fitz/buffer.c +++ b/source/fitz/buffer.c @@ -41,6 +41,22 @@ fz_new_buffer_from_data(fz_context *ctx, unsigned char *data, int size) } fz_buffer * +fz_new_buffer_from_shared_data(fz_context *ctx, unsigned char *data, int size) +{ + fz_buffer *b; + + b = fz_malloc_struct(ctx, fz_buffer); + b->refs = 1; + b->data = data; + b->cap = size; + b->len = size; + b->unused_bits = 0; + b->shared = 1; + + return b; +} + +fz_buffer * fz_keep_buffer(fz_context *ctx, fz_buffer *buf) { if (buf) @@ -55,7 +71,8 @@ fz_drop_buffer(fz_context *ctx, fz_buffer *buf) return; if (--buf->refs == 0) { - fz_free(ctx, buf->data); + if (!buf->shared) + fz_free(ctx, buf->data); fz_free(ctx, buf); } } @@ -63,6 +80,8 @@ fz_drop_buffer(fz_context *ctx, fz_buffer *buf) void fz_resize_buffer(fz_context *ctx, fz_buffer *buf, int size) { + if (buf->shared) + fz_throw(ctx, FZ_ERROR_GENERIC, "cannot resize a buffer with shared storage"); buf->data = fz_resize_array(ctx, buf->data, size, 1); buf->cap = size; if (buf->len > buf->cap) |