From d28129c2ff6a78c50877426f90167d63334ab18a Mon Sep 17 00:00:00 2001 From: Robin Watts Date: Thu, 23 Feb 2012 11:07:15 +0000 Subject: Add fz_trim_buffer function, and call it. Remove stray space at the end of buffers. --- fitz/fitz.h | 1 + fitz/stm_buffer.c | 12 ++++++++++++ fitz/stm_read.c | 1 + pdf/pdf_page.c | 1 + 4 files changed, 15 insertions(+) diff --git a/fitz/fitz.h b/fitz/fitz.h index 856df7e5..ddffa181 100644 --- a/fitz/fitz.h +++ b/fitz/fitz.h @@ -784,6 +784,7 @@ void fz_drop_buffer(fz_context *ctx, fz_buffer *buf); void fz_resize_buffer(fz_context *ctx, fz_buffer *buf, int size); void fz_grow_buffer(fz_context *ctx, fz_buffer *buf); +void fz_trim_buffer(fz_context *ctx, fz_buffer *buf); /* * Resource store diff --git a/fitz/stm_buffer.c b/fitz/stm_buffer.c index 7f9d521d..d70118e1 100644 --- a/fitz/stm_buffer.c +++ b/fitz/stm_buffer.c @@ -28,7 +28,12 @@ fz_buffer * fz_keep_buffer(fz_context *ctx, fz_buffer *buf) { if (buf) + { + if (buf->refs == 1 && buf->cap > buf->len+1) + fz_resize_buffer(ctx, buf, buf->len); buf->refs ++; + } + return buf; } @@ -58,3 +63,10 @@ fz_grow_buffer(fz_context *ctx, fz_buffer *buf) { fz_resize_buffer(ctx, buf, (buf->cap * 3) / 2); } + +void +fz_trim_buffer(fz_context *ctx, fz_buffer *buf) +{ + if (buf->cap > buf->len+1) + fz_resize_buffer(ctx, buf, buf->len); +} diff --git a/fitz/stm_read.c b/fitz/stm_read.c index 81411c54..c2d375f3 100644 --- a/fitz/stm_read.c +++ b/fitz/stm_read.c @@ -125,6 +125,7 @@ fz_read_all(fz_stream *stm, int initial) fz_drop_buffer(ctx, buf); fz_rethrow(ctx); } + fz_trim_buffer(ctx, buf); return buf; } diff --git a/pdf/pdf_page.c b/pdf/pdf_page.c index f2bf713e..de8e7051 100644 --- a/pdf/pdf_page.c +++ b/pdf/pdf_page.c @@ -277,6 +277,7 @@ pdf_load_page_contents_array(pdf_document *xref, fz_obj *list) fz_drop_buffer(ctx, big); fz_throw(ctx, "cannot load content stream"); } + fz_trim_buffer(ctx, big); return big; } -- cgit v1.2.3