diff options
-rw-r--r-- | stream/filt_faxd.c | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/stream/filt_faxd.c b/stream/filt_faxd.c index fbf7a6b8..a0449078 100644 --- a/stream/filt_faxd.c +++ b/stream/filt_faxd.c @@ -313,6 +313,7 @@ fz_processfaxd(fz_filter *f, fz_buffer *in, fz_buffer *out) fz_faxd *fax = (fz_faxd*)f; fz_error *error; int i; + unsigned char *tmp; if (fax->stage == SEOL) goto eol; @@ -392,11 +393,17 @@ eol: if (fax->blackis1) memcpy(out->wp, fax->dst, fax->stride); - else - for (i = 0; i < fax->stride; i++) - out->wp[i] = ~fax->dst[i]; + else { + unsigned char * restrict d = out->wp; + unsigned char * restrict s = fax->dst; + unsigned w = fax->stride; + for (i = 0; i < w; i++) + *d++ = *s++ ^ 0xff; + } - memcpy(fax->ref, fax->dst, fax->stride); + tmp = fax->ref; + fax->ref = fax->dst; + fax->dst = tmp; memset(fax->dst, 0, fax->stride); out->wp += fax->stride; |