Index: core/src/fxcodec/codec/fx_codec_flate.cpp |
diff --git a/core/src/fxcodec/codec/fx_codec_flate.cpp b/core/src/fxcodec/codec/fx_codec_flate.cpp |
index a12fffbe5ced0341c96cbf26a44915ffdedf01ec..1071431ae6bd88eee87aac96719f839a1e3b495b 100644 |
--- a/core/src/fxcodec/codec/fx_codec_flate.cpp |
+++ b/core/src/fxcodec/codec/fx_codec_flate.cpp |
@@ -524,13 +524,11 @@ static void TIFF_PredictorEncode(FX_LPBYTE& data_buf, FX_DWORD& data_size, |
static void TIFF_PredictLine(FX_LPBYTE dest_buf, int row_size, int BitsPerComponent, int Colors, int Columns) |
{ |
if (BitsPerComponent == 1) { |
- int row_bits = BitsPerComponent * Colors * Columns; |
+ int row_bits = FX_MIN(BitsPerComponent * Colors * Columns, row_size * 8); |
for(int i = 1; i < row_bits; i ++) { |
int col = i % 8; |
int index = i / 8; |
- int index_pre = (col == 0) ? (index - 1) : index; |
- int col_pre = (col == 0) ? 8 : col; |
- if( ((dest_buf[index] >> (7 - col)) & 1) ^ ((dest_buf[index_pre] >> (8 - col_pre)) & 1) ) { |
+ if( ((dest_buf[index] >> (7 - col)) & 1) ^ ((dest_buf[(i-1)/8] >> (7 - (i-1)%8)) & 1) ) { |
dest_buf[index] |= 1 << (7 - col); |
} else { |
dest_buf[index] &= ~(1 << (7 - col)); |