summaryrefslogtreecommitdiff
path: root/fitz/filt_dctd.c
diff options
context:
space:
mode:
authorSebastian Rasmussen <sebras@hotmail.com>2010-08-02 00:22:25 +0000
committerSebastian Rasmussen <sebras@hotmail.com>2010-08-02 00:22:25 +0000
commitecbeea576bab0488995154b63c8a99d8c07b5362 (patch)
tree590af0c7a47932102a047fb621d9ec7af8f2f60f /fitz/filt_dctd.c
parenta5b341660d2ca416498d3b626c446d27e33b7bd8 (diff)
downloadmupdf-ecbeea576bab0488995154b63c8a99d8c07b5362.tar.xz
Put bytes not consumed by DCT decoder back into stream and make sure that state is always torn down.
Diffstat (limited to 'fitz/filt_dctd.c')
-rw-r--r--fitz/filt_dctd.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/fitz/filt_dctd.c b/fitz/filt_dctd.c
index e260b34c..daa66902 100644
--- a/fitz/filt_dctd.c
+++ b/fitz/filt_dctd.c
@@ -161,8 +161,6 @@ readdctd(fz_stream *stm, unsigned char *buf, int len)
if (cinfo->output_scanline == cinfo->output_height)
{
state->done = 1;
- jpeg_finish_decompress(cinfo);
- jpeg_destroy_decompress(cinfo);
return p - buf;
}
@@ -188,6 +186,9 @@ static void
closedctd(fz_stream *stm)
{
fz_dctd *state = stm->state;
+ jpeg_finish_decompress(&state->cinfo);
+ jpeg_destroy_decompress(&state->cinfo);
+ state->chain->rp = state->chain->wp - state->cinfo.src->bytes_in_buffer;
fz_free(state->scanline);
fz_close(state->chain);
fz_free(state);