| Index: core/fxcodec/codec/fx_codec_progress.cpp
|
| diff --git a/core/fxcodec/codec/fx_codec_progress.cpp b/core/fxcodec/codec/fx_codec_progress.cpp
|
| index 7d8a3203e9356000f04b94896cbf291652aa794d..e8155c0b2632d8b16986649da2a0e339257af455 100644
|
| --- a/core/fxcodec/codec/fx_codec_progress.cpp
|
| +++ b/core/fxcodec/codec/fx_codec_progress.cpp
|
| @@ -339,7 +339,8 @@ bool CCodec_ProgressiveDecoder::JpegReadMoreData(CCodec_JpegModule* pJpegModule,
|
| dwSize = dwConsume;
|
| }
|
| }
|
| - if (!m_pFile->ReadBlock(m_pSrcBuf + dwAvail, m_offSet, dwSize)) {
|
| + if (m_pFile->ReadBlock(m_pSrcBuf + dwAvail, m_offSet, dwSize) != dwSize &&
|
| + !m_pFile->IsEOF()) {
|
| err_status = FXCODEC_STATUS_ERR_READ;
|
| return false;
|
| }
|
| @@ -612,7 +613,8 @@ bool CCodec_ProgressiveDecoder::GifReadMoreData(CCodec_GifModule* pGifModule,
|
| dwSize = dwConsume;
|
| }
|
| }
|
| - if (!m_pFile->ReadBlock(m_pSrcBuf + dwAvail, m_offSet, dwSize)) {
|
| + if (m_pFile->ReadBlock(m_pSrcBuf + dwAvail, m_offSet, dwSize) != dwSize &&
|
| + !m_pFile->IsEOF()) {
|
| err_status = FXCODEC_STATUS_ERR_READ;
|
| return false;
|
| }
|
| @@ -902,7 +904,8 @@ bool CCodec_ProgressiveDecoder::BmpReadMoreData(CCodec_BmpModule* pBmpModule,
|
| dwSize = dwConsume;
|
| }
|
| }
|
| - if (!m_pFile->ReadBlock(m_pSrcBuf + dwAvail, m_offSet, dwSize)) {
|
| + if (m_pFile->ReadBlock(m_pSrcBuf + dwAvail, m_offSet, dwSize) != dwSize &&
|
| + !m_pFile->IsEOF()) {
|
| err_status = FXCODEC_STATUS_ERR_READ;
|
| return false;
|
| }
|
| @@ -1064,7 +1067,8 @@ bool CCodec_ProgressiveDecoder::DetectImageType(FXCODEC_IMAGE_TYPE imageType,
|
| m_status = FXCODEC_STATUS_ERR_MEMORY;
|
| return false;
|
| }
|
| - bool bResult = m_pFile->ReadBlock(m_pSrcBuf, 0, size);
|
| + bool bResult =
|
| + m_pFile->ReadBlock(m_pSrcBuf, 0, size) == size || m_pFile->IsEOF();
|
| if (!bResult) {
|
| m_status = FXCODEC_STATUS_ERR_READ;
|
| return false;
|
| @@ -1116,7 +1120,8 @@ bool CCodec_ProgressiveDecoder::DetectImageType(FXCODEC_IMAGE_TYPE imageType,
|
| m_status = FXCODEC_STATUS_ERR_MEMORY;
|
| return false;
|
| }
|
| - bool bResult = m_pFile->ReadBlock(m_pSrcBuf, 0, size);
|
| + bool bResult =
|
| + m_pFile->ReadBlock(m_pSrcBuf, 0, size) == size || m_pFile->IsEOF();
|
| if (!bResult) {
|
| m_status = FXCODEC_STATUS_ERR_READ;
|
| return false;
|
| @@ -1165,7 +1170,8 @@ bool CCodec_ProgressiveDecoder::DetectImageType(FXCODEC_IMAGE_TYPE imageType,
|
| m_status = FXCODEC_STATUS_ERR_MEMORY;
|
| return false;
|
| }
|
| - bool bResult = m_pFile->ReadBlock(m_pSrcBuf, 0, size);
|
| + bool bResult =
|
| + m_pFile->ReadBlock(m_pSrcBuf, 0, size) == size || m_pFile->IsEOF();
|
| if (!bResult) {
|
| m_status = FXCODEC_STATUS_ERR_READ;
|
| return false;
|
| @@ -1190,7 +1196,9 @@ bool CCodec_ProgressiveDecoder::DetectImageType(FXCODEC_IMAGE_TYPE imageType,
|
| FXSYS_memset(m_pSrcBuf, 0, input_size);
|
| m_SrcSize = input_size;
|
| }
|
| - bResult = m_pFile->ReadBlock(m_pSrcBuf, m_offSet, input_size);
|
| + bResult =
|
| + m_pFile->ReadBlock(m_pSrcBuf, m_offSet, input_size) == input_size ||
|
| + m_pFile->IsEOF();
|
| if (!bResult) {
|
| m_status = FXCODEC_STATUS_ERR_READ;
|
| return false;
|
| @@ -1229,7 +1237,8 @@ bool CCodec_ProgressiveDecoder::DetectImageType(FXCODEC_IMAGE_TYPE imageType,
|
| m_status = FXCODEC_STATUS_ERR_MEMORY;
|
| return false;
|
| }
|
| - bool bResult = m_pFile->ReadBlock(m_pSrcBuf, 0, size);
|
| + bool bResult =
|
| + m_pFile->ReadBlock(m_pSrcBuf, 0, size) == size || m_pFile->IsEOF();
|
| if (!bResult) {
|
| m_status = FXCODEC_STATUS_ERR_READ;
|
| return false;
|
| @@ -2137,7 +2146,9 @@ FXCODEC_STATUS CCodec_ProgressiveDecoder::ContinueDecode(IFX_Pause* pPause) {
|
| FXSYS_memset(m_pSrcBuf, 0, input_size);
|
| m_SrcSize = input_size;
|
| }
|
| - bool bResult = m_pFile->ReadBlock(m_pSrcBuf, m_offSet, input_size);
|
| + bool bResult =
|
| + m_pFile->ReadBlock(m_pSrcBuf, m_offSet, input_size) == input_size ||
|
| + m_pFile->IsEOF();
|
| if (!bResult) {
|
| m_pDeviceBitmap = nullptr;
|
| m_pFile = nullptr;
|
|
|