| 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 9ac6913788a30e36470e822723060ffb312843c8..b86689009d6f3b658b0b3019ad52304a64e6f500 100644
|
| --- a/core/fxcodec/codec/fx_codec_progress.cpp
|
| +++ b/core/fxcodec/codec/fx_codec_progress.cpp
|
| @@ -340,7 +340,8 @@ FX_BOOL CCodec_ProgressiveDecoder::JpegReadMoreData(
|
| 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;
|
| }
|
| @@ -613,7 +614,8 @@ FX_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;
|
| }
|
| @@ -903,7 +905,8 @@ FX_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;
|
| }
|
| @@ -1066,7 +1069,8 @@ FX_BOOL CCodec_ProgressiveDecoder::DetectImageType(
|
| m_status = FXCODEC_STATUS_ERR_MEMORY;
|
| return FALSE;
|
| }
|
| - FX_BOOL bResult = m_pFile->ReadBlock(m_pSrcBuf, 0, size);
|
| + FX_BOOL bResult =
|
| + m_pFile->ReadBlock(m_pSrcBuf, 0, size) == size || m_pFile->IsEOF();
|
| if (!bResult) {
|
| m_status = FXCODEC_STATUS_ERR_READ;
|
| return FALSE;
|
| @@ -1118,7 +1122,8 @@ FX_BOOL CCodec_ProgressiveDecoder::DetectImageType(
|
| m_status = FXCODEC_STATUS_ERR_MEMORY;
|
| return FALSE;
|
| }
|
| - FX_BOOL bResult = m_pFile->ReadBlock(m_pSrcBuf, 0, size);
|
| + FX_BOOL bResult =
|
| + m_pFile->ReadBlock(m_pSrcBuf, 0, size) == size || m_pFile->IsEOF();
|
| if (!bResult) {
|
| m_status = FXCODEC_STATUS_ERR_READ;
|
| return FALSE;
|
| @@ -1167,7 +1172,8 @@ FX_BOOL CCodec_ProgressiveDecoder::DetectImageType(
|
| m_status = FXCODEC_STATUS_ERR_MEMORY;
|
| return FALSE;
|
| }
|
| - FX_BOOL bResult = m_pFile->ReadBlock(m_pSrcBuf, 0, size);
|
| + FX_BOOL bResult =
|
| + m_pFile->ReadBlock(m_pSrcBuf, 0, size) == size || m_pFile->IsEOF();
|
| if (!bResult) {
|
| m_status = FXCODEC_STATUS_ERR_READ;
|
| return FALSE;
|
| @@ -1192,7 +1198,9 @@ FX_BOOL CCodec_ProgressiveDecoder::DetectImageType(
|
| 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;
|
| @@ -1231,7 +1239,8 @@ FX_BOOL CCodec_ProgressiveDecoder::DetectImageType(
|
| m_status = FXCODEC_STATUS_ERR_MEMORY;
|
| return FALSE;
|
| }
|
| - FX_BOOL bResult = m_pFile->ReadBlock(m_pSrcBuf, 0, size);
|
| + FX_BOOL bResult =
|
| + m_pFile->ReadBlock(m_pSrcBuf, 0, size) == size || m_pFile->IsEOF();
|
| if (!bResult) {
|
| m_status = FXCODEC_STATUS_ERR_READ;
|
| return FALSE;
|
| @@ -2140,7 +2149,9 @@ FXCODEC_STATUS CCodec_ProgressiveDecoder::ContinueDecode(IFX_Pause* pPause) {
|
| FXSYS_memset(m_pSrcBuf, 0, input_size);
|
| m_SrcSize = input_size;
|
| }
|
| - FX_BOOL bResult = m_pFile->ReadBlock(m_pSrcBuf, m_offSet, input_size);
|
| + FX_BOOL bResult =
|
| + m_pFile->ReadBlock(m_pSrcBuf, m_offSet, input_size) == input_size ||
|
| + m_pFile->IsEOF();
|
| if (!bResult) {
|
| m_pDeviceBitmap = nullptr;
|
| m_pFile = nullptr;
|
|
|