diff options
author | Tor Andersson <tor@ghostscript.com> | 2010-07-29 23:17:46 +0000 |
---|---|---|
committer | Tor Andersson <tor@ghostscript.com> | 2010-07-29 23:17:46 +0000 |
commit | d797d4707564bd9c0e1536d1d6355945aa1be740 (patch) | |
tree | b6aef992de0ce2aa306c4dd330512852c1a63ede /fitz/stm_buffer.c | |
parent | 0b954421d7908c8b835d96b4a945418c2ae08de7 (diff) | |
download | mupdf-d797d4707564bd9c0e1536d1d6355945aa1be740.tar.xz |
Use chained reader like interface for filters instead of process interface.
Diffstat (limited to 'fitz/stm_buffer.c')
-rw-r--r-- | fitz/stm_buffer.c | 75 |
1 files changed, 9 insertions, 66 deletions
diff --git a/fitz/stm_buffer.c b/fitz/stm_buffer.c index f7da8289..00530071 100644 --- a/fitz/stm_buffer.c +++ b/fitz/stm_buffer.c @@ -9,29 +9,9 @@ fz_newbuffer(int size) b = fz_malloc(sizeof(fz_buffer)); b->refs = 1; - b->ownsdata = 1; - b->bp = fz_malloc(size); - b->rp = b->bp; - b->wp = b->bp; - b->ep = b->bp + size; - b->eof = 0; - - return b; -} - -fz_buffer * -fz_newbufferwithmemory(unsigned char *data, int size) -{ - fz_buffer *b; - - b = fz_malloc(sizeof(fz_buffer)); - b->refs = 1; - b->ownsdata = 0; - b->bp = data; - b->rp = b->bp; - b->wp = b->bp + size; - b->ep = b->bp + size; - b->eof = 0; + b->data = fz_malloc(size); + b->cap = size; + b->len = 0; return b; } @@ -48,8 +28,7 @@ fz_dropbuffer(fz_buffer *buf) { if (--buf->refs == 0) { - if (buf->ownsdata) - fz_free(buf->bp); + fz_free(buf->data); fz_free(buf); } } @@ -57,50 +36,14 @@ fz_dropbuffer(fz_buffer *buf) void fz_resizebuffer(fz_buffer *buf, int size) { - int rp = MIN(buf->rp - buf->bp, size); - int wp = MIN(buf->wp - buf->bp, size); - - if (!buf->ownsdata) - { - fz_warn("assert: resize borrowed memory"); - return; - } - - buf->bp = fz_realloc(buf->bp, size); - buf->rp = buf->bp + rp; - buf->wp = buf->bp + wp; - buf->ep = buf->bp + size; + buf->data = fz_realloc(buf->data, size); + buf->cap = size; + if (buf->len > buf->cap) + buf->len = buf->cap; } void fz_growbuffer(fz_buffer *buf) { - int rp = buf->rp - buf->bp; - int wp = buf->wp - buf->bp; - int ep = buf->ep - buf->bp; - - if (!buf->ownsdata) - { - fz_warn("assert: grow borrowed memory"); - return; - } - - buf->bp = fz_realloc(buf->bp, (ep * 3) / 2); - buf->rp = buf->bp + rp; - buf->wp = buf->bp + wp; - buf->ep = buf->bp + (ep * 3) / 2; -} - -void -fz_rewindbuffer(fz_buffer *buf) -{ - if (!buf->ownsdata) - { - fz_warn("assert: rewind borrowed memory"); - return; - } - - memmove(buf->bp, buf->rp, buf->wp - buf->rp); - buf->wp = buf->bp + (buf->wp - buf->rp); - buf->rp = buf->bp; + fz_resizebuffer(buf, (buf->cap * 3) / 2); } |