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; |