summaryrefslogtreecommitdiff
path: root/source/xps/xps-zip.c
diff options
context:
space:
mode:
authorTor Andersson <tor.andersson@artifex.com>2016-12-28 13:40:21 +0100
committerTor Andersson <tor.andersson@artifex.com>2017-01-09 13:21:40 +0100
commit6933d36755f90e23308a52c0c3b9c6a4423a9e4c (patch)
treed845ac62869d8a09fbf638a2c4bb0953efec1eb7 /source/xps/xps-zip.c
parent7a439812b2226c1e3b203ec603f05b39d159f91e (diff)
downloadmupdf-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.c20
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