diff options
author | Tor Andersson <tor@ghostscript.com> | 2004-11-30 06:41:31 +0100 |
---|---|---|
committer | Tor Andersson <tor@ghostscript.com> | 2004-11-30 06:41:31 +0100 |
commit | 951f2e23a5ec055c358ea8b6b542d9fd1a4668b0 (patch) | |
tree | 2a4ceae57ee8267d124f9c1ffea219e02849e718 /filter | |
parent | 4008b4d986b700830fad5086df3acfc1028a9e3b (diff) | |
download | mupdf-951f2e23a5ec055c358ea8b6b542d9fd1a4668b0.tar.xz |
small bugfixes
Diffstat (limited to 'filter')
-rw-r--r-- | filter/lzwd.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/filter/lzwd.c b/filter/lzwd.c index 74ddd9ce..95fc462a 100644 --- a/filter/lzwd.c +++ b/filter/lzwd.c @@ -109,6 +109,13 @@ static inline fz_error * fillbits(fz_lzwd *lzw, fz_buffer *in) return nil; } +static inline void unstuff(fz_lzwd *lzw, fz_buffer *in) +{ + int i = (32 - lzw->bidx) / 8; + while (i-- && in->rp > in->bp) + in->rp --; +} + fz_error * fz_processlzwd(fz_filter *filter, fz_buffer *in, fz_buffer *out) { @@ -131,6 +138,7 @@ fz_processlzwd(fz_filter *filter, fz_buffer *in, fz_buffer *out) if (lzw->bidx > 32 - lzw->codebits) { out->eof = 1; + unstuff(lzw, in); return fz_iodone; } } @@ -146,6 +154,7 @@ fz_processlzwd(fz_filter *filter, fz_buffer *in, fz_buffer *out) { eatbits(lzw, lzw->codebits); out->eof = 1; + unstuff(lzw, in); return fz_iodone; } @@ -162,6 +171,7 @@ fz_processlzwd(fz_filter *filter, fz_buffer *in, fz_buffer *out) { eatbits(lzw, oldcodebits + MINBITS); out->eof = 1; + unstuff(lzw, in); return fz_iodone; } |