Index: core/fpdfapi/parser/cpdf_syntax_parser.cpp |
diff --git a/core/fpdfapi/parser/cpdf_syntax_parser.cpp b/core/fpdfapi/parser/cpdf_syntax_parser.cpp |
index 842ef2b22201143cbda709303041412adf3c8a30..e874d87e7f6c9d38b3135183c4e6140144e01c21 100644 |
--- a/core/fpdfapi/parser/cpdf_syntax_parser.cpp |
+++ b/core/fpdfapi/parser/cpdf_syntax_parser.cpp |
@@ -64,7 +64,8 @@ bool CPDF_SyntaxParser::ReadChar(FX_FILESIZE read_pos, uint32_t read_size) { |
read_pos = m_FileLen - read_size; |
} |
} |
- if (!m_pFileAccess->ReadBlock(m_pFileBuf, read_pos, read_size)) |
+ if (m_pFileAccess->ReadBlock(m_pFileBuf, read_pos, read_size) != read_size && |
+ !m_pFileAccess->IsEOF()) |
return false; |
m_BufOffset = read_pos; |
@@ -108,9 +109,11 @@ bool CPDF_SyntaxParser::GetCharAtBackward(FX_FILESIZE pos, uint8_t& ch) { |
} |
bool CPDF_SyntaxParser::ReadBlock(uint8_t* pBuf, uint32_t size) { |
- if (!m_pFileAccess->ReadBlock(pBuf, m_Pos + m_HeaderOffset, size)) |
+ uint32_t readSize = |
+ m_pFileAccess->ReadBlock(pBuf, m_Pos + m_HeaderOffset, size); |
+ if (readSize != size && !m_pFileAccess->IsEOF()) |
return false; |
- m_Pos += size; |
+ m_Pos += readSize; |
return true; |
} |