diff options
author | Tor Andersson <tor.andersson@artifex.com> | 2016-12-28 13:40:21 +0100 |
---|---|---|
committer | Tor Andersson <tor.andersson@artifex.com> | 2017-01-09 13:21:40 +0100 |
commit | 6933d36755f90e23308a52c0c3b9c6a4423a9e4c (patch) | |
tree | d845ac62869d8a09fbf638a2c4bb0953efec1eb7 /source/xps/xps-zip.c | |
parent | 7a439812b2226c1e3b203ec603f05b39d159f91e (diff) | |
download | mupdf-6933d36755f90e23308a52c0c3b9c6a4423a9e4c.tar.xz |
Make fz_parse_xml take a fz_buffer. Make xps_part contain a fz_buffer.
Diffstat (limited to 'source/xps/xps-zip.c')
-rw-r--r-- | source/xps/xps-zip.c | 20 |
1 files changed, 6 insertions, 14 deletions
diff --git a/source/xps/xps-zip.c b/source/xps/xps-zip.c index fe1dcce8..fe363b34 100644 --- a/source/xps/xps-zip.c +++ b/source/xps/xps-zip.c @@ -3,8 +3,8 @@ static void xps_init_document(fz_context *ctx, xps_document *doc); -xps_part * -xps_new_part(fz_context *ctx, xps_document *doc, char *name, unsigned char *data, size_t size) +static xps_part * +xps_new_part(fz_context *ctx, xps_document *doc, char *name, fz_buffer *data) { xps_part *part; @@ -12,13 +12,11 @@ xps_new_part(fz_context *ctx, xps_document *doc, char *name, unsigned char *data fz_try(ctx) { part->name = fz_strdup(ctx, name); - part->data = data; - part->size = size; + part->data = data; /* take ownership of buffer */ } fz_catch(ctx) { - fz_free(ctx, part->name); - fz_free(ctx, part->data); + fz_drop_buffer(ctx, data); fz_free(ctx, part); fz_rethrow(ctx); } @@ -30,7 +28,7 @@ void xps_drop_part(fz_context *ctx, xps_document *doc, xps_part *part) { fz_free(ctx, part->name); - fz_free(ctx, part->data); + fz_drop_buffer(ctx, part->data); fz_free(ctx, part); } @@ -43,8 +41,6 @@ xps_read_part(fz_context *ctx, xps_document *doc, char *partname) fz_archive *zip = doc->zip; fz_buffer *buf, *tmp; char path[2048]; - unsigned char *data; - size_t size; int count; char *name; int seen_last; @@ -92,11 +88,7 @@ xps_read_part(fz_context *ctx, xps_document *doc, char *partname) } } - fz_terminate_buffer(ctx, buf); /* zero-terminate */ - size = fz_buffer_extract(ctx, buf, &data); /* take over the data ('size' excludes the zero terminator) */ - fz_drop_buffer(ctx, buf); - - return xps_new_part(ctx, doc, partname, data, size); + return xps_new_part(ctx, doc, partname, buf); } int |