summaryrefslogtreecommitdiff
path: root/fitz/stm_buffer.c
diff options
context:
space:
mode:
authorTor Andersson <tor@ghostscript.com>2010-07-29 23:17:46 +0000
committerTor Andersson <tor@ghostscript.com>2010-07-29 23:17:46 +0000
commitd797d4707564bd9c0e1536d1d6355945aa1be740 (patch)
treeb6aef992de0ce2aa306c4dd330512852c1a63ede /fitz/stm_buffer.c
parent0b954421d7908c8b835d96b4a945418c2ae08de7 (diff)
downloadmupdf-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.c75
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);
}