| 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 519ff0052254aa1b9c70bbe59242a8089d2d0651..34356e175746edb42dbf25dbfd1060a0a636a752 100644
|
| --- a/core/src/fxcodec/codec/fx_codec_flate.cpp
|
| +++ b/core/src/fxcodec/codec/fx_codec_flate.cpp
|
| @@ -558,7 +558,7 @@ FX_BOOL TIFF_PredictorEncode(uint8_t*& data_buf,
|
| }
|
|
|
| void TIFF_PredictLine(uint8_t* dest_buf,
|
| - int row_size,
|
| + FX_DWORD row_size,
|
| int BitsPerComponent,
|
| int Colors,
|
| int Columns) {
|
| @@ -582,7 +582,7 @@ void TIFF_PredictLine(uint8_t* dest_buf,
|
| }
|
| int BytesPerPixel = BitsPerComponent * Colors / 8;
|
| if (BitsPerComponent == 16) {
|
| - for (int i = BytesPerPixel; i < row_size; i += 2) {
|
| + for (FX_DWORD i = BytesPerPixel; i < row_size; i += 2) {
|
| FX_WORD pixel =
|
| (dest_buf[i - BytesPerPixel] << 8) | dest_buf[i - BytesPerPixel + 1];
|
| pixel += (dest_buf[i] << 8) | dest_buf[i + 1];
|
| @@ -590,7 +590,7 @@ void TIFF_PredictLine(uint8_t* dest_buf,
|
| dest_buf[i + 1] = (uint8_t)pixel;
|
| }
|
| } else {
|
| - for (int i = BytesPerPixel; i < row_size; i++) {
|
| + for (FX_DWORD i = BytesPerPixel; i < row_size; i++) {
|
| dest_buf[i] += dest_buf[i - BytesPerPixel];
|
| }
|
| }
|
| @@ -761,7 +761,11 @@ class CCodec_FlateScanlineDecoder : public CCodec_ScanlineDecoder {
|
| uint8_t* m_pPredictBuffer;
|
| uint8_t* m_pPredictRaw;
|
| int m_Predictor;
|
| - int m_Colors, m_BitsPerComponent, m_Columns, m_PredictPitch, m_LeftOver;
|
| + int m_Colors;
|
| + int m_BitsPerComponent;
|
| + int m_Columns;
|
| + FX_DWORD m_PredictPitch;
|
| + size_t m_LeftOver;
|
| };
|
|
|
| CCodec_FlateScanlineDecoder::CCodec_FlateScanlineDecoder() {
|
| @@ -798,7 +802,7 @@ void CCodec_FlateScanlineDecoder::Create(const uint8_t* src_buf,
|
| m_nComps = nComps;
|
| m_bpc = bpc;
|
| m_bColorTransformed = FALSE;
|
| - m_Pitch = (width * nComps * bpc + 7) / 8;
|
| + m_Pitch = (static_cast<FX_DWORD>(width) * nComps * bpc + 7) / 8;
|
| m_pScanline = FX_Alloc(uint8_t, m_Pitch);
|
| m_Predictor = 0;
|
| if (predictor) {
|
| @@ -816,7 +820,10 @@ void CCodec_FlateScanlineDecoder::Create(const uint8_t* src_buf,
|
| m_Colors = Colors;
|
| m_BitsPerComponent = BitsPerComponent;
|
| m_Columns = Columns;
|
| - m_PredictPitch = (m_BitsPerComponent * m_Colors * m_Columns + 7) / 8;
|
| + m_PredictPitch =
|
| + (static_cast<FX_DWORD>(m_BitsPerComponent) * m_Colors * m_Columns +
|
| + 7) /
|
| + 8;
|
| m_pLastLine = FX_Alloc(uint8_t, m_PredictPitch);
|
| m_pPredictRaw = FX_Alloc(uint8_t, m_PredictPitch + 1);
|
| m_pPredictBuffer = FX_Alloc(uint8_t, m_PredictPitch);
|
| @@ -849,8 +856,9 @@ uint8_t* CCodec_FlateScanlineDecoder::v_GetNextLine() {
|
| m_OutputWidth);
|
| }
|
| } else {
|
| - int bytes_to_go = m_Pitch;
|
| - int read_leftover = m_LeftOver > bytes_to_go ? bytes_to_go : m_LeftOver;
|
| + size_t bytes_to_go = m_Pitch;
|
| + size_t read_leftover =
|
| + m_LeftOver > bytes_to_go ? bytes_to_go : m_LeftOver;
|
| if (read_leftover) {
|
| FXSYS_memcpy(m_pScanline,
|
| m_pPredictBuffer + m_PredictPitch - m_LeftOver,
|
| @@ -869,7 +877,7 @@ uint8_t* CCodec_FlateScanlineDecoder::v_GetNextLine() {
|
| TIFF_PredictLine(m_pPredictBuffer, m_PredictPitch, m_BitsPerComponent,
|
| m_Colors, m_Columns);
|
| }
|
| - int read_bytes =
|
| + size_t read_bytes =
|
| m_PredictPitch > bytes_to_go ? bytes_to_go : m_PredictPitch;
|
| FXSYS_memcpy(m_pScanline + m_Pitch - bytes_to_go, m_pPredictBuffer,
|
| read_bytes);
|
|
|