summaryrefslogtreecommitdiff
path: root/fitz/filt_dctd.c
diff options
context:
space:
mode:
Diffstat (limited to 'fitz/filt_dctd.c')
-rw-r--r--fitz/filt_dctd.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/fitz/filt_dctd.c b/fitz/filt_dctd.c
index 74e7bc40..97651297 100644
--- a/fitz/filt_dctd.c
+++ b/fitz/filt_dctd.c
@@ -182,8 +182,18 @@ static void
closedctd(fz_stream *stm)
{
fz_dctd *state = stm->state;
+
+ if (setjmp(state->jb))
+ {
+ state->chain->rp = state->chain->wp - state->cinfo.src->bytes_in_buffer;
+ fz_warn("jpeg error: %s", state->msg);
+ goto skip;
+ }
+
if (state->init)
jpeg_finish_decompress(&state->cinfo);
+
+skip:
state->chain->rp = state->chain->wp - state->cinfo.src->bytes_in_buffer;
jpeg_destroy_decompress(&state->cinfo);
fz_free(state->scanline);