From b44e0c72d1e1bff5181348d107ae5e2d8371cd50 Mon Sep 17 00:00:00 2001 From: warmerda Date: Sun, 21 Jun 2009 19:44:48 +0000 Subject: fix 16bit pnm byte order to be bigendian per bug #2809967 --- ChangeLog | 5 +++++ rdppm.c | 16 ++++++++-------- wrppm.c | 2 +- 3 files changed, 14 insertions(+), 9 deletions(-) diff --git a/ChangeLog b/ChangeLog index effc85a..b4a6013 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2009-06-21 Frank Warmerdam + + * rdppm.c, wrppm.c: Fix byte order for 16bit pnm. Should be bigendian. + http://sourceforge.net/support/tracker.php?aid=2809967 + 2006-02-25 Paul van den Berg * created branch jpeg6b_vollbeding diff --git a/rdppm.c b/rdppm.c index 1df35c1..309c943 100644 --- a/rdppm.c +++ b/rdppm.c @@ -250,8 +250,8 @@ get_word_gray_row (j_compress_ptr cinfo, cjpeg_source_ptr sinfo) bufferptr = source->iobuffer; for (col = cinfo->image_width; col > 0; col--) { register int temp; - temp = UCH(*bufferptr++); - temp |= UCH(*bufferptr++) << 8; + temp = UCH(*bufferptr++) << 8; + temp |= UCH(*bufferptr++); *ptr++ = rescale[temp]; } return 1; @@ -274,14 +274,14 @@ get_word_rgb_row (j_compress_ptr cinfo, cjpeg_source_ptr sinfo) bufferptr = source->iobuffer; for (col = cinfo->image_width; col > 0; col--) { register int temp; - temp = UCH(*bufferptr++); - temp |= UCH(*bufferptr++) << 8; + temp = UCH(*bufferptr++) << 8; + temp |= UCH(*bufferptr++); *ptr++ = rescale[temp]; - temp = UCH(*bufferptr++); - temp |= UCH(*bufferptr++) << 8; + temp = UCH(*bufferptr++) << 8; + temp |= UCH(*bufferptr++); *ptr++ = rescale[temp]; - temp = UCH(*bufferptr++); - temp |= UCH(*bufferptr++) << 8; + temp = UCH(*bufferptr++) << 8; + temp |= UCH(*bufferptr++); *ptr++ = rescale[temp]; } return 1; diff --git a/wrppm.c b/wrppm.c index 6c6d908..65b927c 100644 --- a/wrppm.c +++ b/wrppm.c @@ -43,8 +43,8 @@ /* The word-per-sample format always puts the LSB first. */ #define PUTPPMSAMPLE(ptr,v) \ { register int val_ = v; \ - *ptr++ = (char) (val_ & 0xFF); \ *ptr++ = (char) ((val_ >> 8) & 0xFF); \ + *ptr++ = (char) (val_ & 0xFF); \ } #define BYTESPERSAMPLE 2 #define PPM_MAXVAL ((1<