diff options
author | Tor Andersson <tor.andersson@artifex.com> | 2011-12-08 15:32:03 +0100 |
---|---|---|
committer | Tor Andersson <tor.andersson@artifex.com> | 2011-12-08 21:46:55 +0100 |
commit | 34c971b594bad41fa6c2ad4a9798e5a18de129b5 (patch) | |
tree | 0c3956c35f827d1649e0520abf18974a4e0ec8e2 /fitz/filt_faxd.c | |
parent | e64a57b1e9c2ba6c6f54eff73c414be9e78dafbe (diff) | |
download | mupdf-34c971b594bad41fa6c2ad4a9798e5a18de129b5.tar.xz |
Throw exceptions for read errors.
Diffstat (limited to 'fitz/filt_faxd.c')
-rw-r--r-- | fitz/filt_faxd.c | 42 |
1 files changed, 17 insertions, 25 deletions
diff --git a/fitz/filt_faxd.c b/fitz/filt_faxd.c index 14a71a87..f94a2cd6 100644 --- a/fitz/filt_faxd.c +++ b/fitz/filt_faxd.c @@ -265,6 +265,7 @@ enum struct fz_faxd_s { + fz_context *ctx; fz_stream *chain; int k; @@ -331,8 +332,8 @@ get_code(fz_faxd *fax, const cfd_node *table, int initialbits) } /* decode one 1d code */ -static fz_error -dec1d(fz_faxd *fax) +static void +dec1d(fz_context *ctx, fz_faxd *fax) { int code; @@ -345,13 +346,13 @@ dec1d(fz_faxd *fax) code = get_code(fax, cf_white_decode, cfd_white_initial_bits); if (code == UNCOMPRESSED) - return fz_error_make("uncompressed data in faxd"); + fz_throw(ctx, "uncompressed data in faxd"); if (code < 0) - return fz_error_make("negative code in 1d faxd"); + fz_throw(ctx, "negative code in 1d faxd"); if (fax->a + code > fax->columns) - return fz_error_make("overflow in 1d faxd"); + fz_throw(ctx, "overflow in 1d faxd"); if (fax->c) setbits(fax->dst, fax->a, fax->a + code); @@ -365,13 +366,11 @@ dec1d(fz_faxd *fax) } else fax->stage = STATE_MAKEUP; - - return fz_okay; } /* decode one 2d code */ -static fz_error -dec2d(fz_faxd *fax) +static void +dec2d(fz_context *ctx, fz_faxd *fax) { int code, b1, b2; @@ -386,13 +385,13 @@ dec2d(fz_faxd *fax) code = get_code(fax, cf_white_decode, cfd_white_initial_bits); if (code == UNCOMPRESSED) - return fz_error_make("uncompressed data in faxd"); + fz_throw(ctx, "uncompressed data in faxd"); if (code < 0) - return fz_error_make("negative code in 2d faxd"); + fz_throw(ctx, "negative code in 2d faxd"); if (fax->a + code > fax->columns) - return fz_error_make("overflow in 2d faxd"); + fz_throw(ctx, "overflow in 2d faxd"); if (fax->c) setbits(fax->dst, fax->a, fax->a + code); @@ -408,7 +407,7 @@ dec2d(fz_faxd *fax) fax->stage = STATE_NORMAL; } - return fz_okay; + return; } code = get_code(fax, cf_2d_decode, cfd_2d_initial_bits); @@ -485,16 +484,14 @@ dec2d(fz_faxd *fax) break; case UNCOMPRESSED: - return fz_error_make("uncompressed data in faxd"); + fz_throw(ctx, "uncompressed data in faxd"); case ERROR: - return fz_error_make("invalid code in 2d faxd"); + fz_throw(ctx, "invalid code in 2d faxd"); default: - return fz_error_make("invalid code in 2d faxd (%d)", code); + fz_throw(ctx, "invalid code in 2d faxd (%d)", code); } - - return 0; } static int @@ -504,7 +501,6 @@ read_faxd(fz_stream *stm, unsigned char *buf, int len) unsigned char *p = buf; unsigned char *ep = buf + len; unsigned char *tmp; - fz_error error; if (fax->stage == STATE_DONE) return 0; @@ -558,16 +554,12 @@ loop: else if (fax->dim == 1) { fax->eolc = 0; - error = dec1d(fax); - if (error) - return fz_error_note(error, "cannot decode 1d code"); + dec1d(stm->ctx, fax); } else if (fax->dim == 2) { fax->eolc = 0; - error = dec2d(fax); - if (error) - return fz_error_note(error, "cannot decode 2d code"); + dec2d(stm->ctx, fax); } /* no eol check after makeup codes nor in the middle of an H code */ |