Index: core/fpdfapi/parser/cpdf_parser.cpp |
diff --git a/core/fpdfapi/parser/cpdf_parser.cpp b/core/fpdfapi/parser/cpdf_parser.cpp |
index ed20cf73f4f43ce2dd9aa8d12c68486e109ea813..4a6c0169b3c44554b490e322bec701e4d6931dc1 100644 |
--- a/core/fpdfapi/parser/cpdf_parser.cpp |
+++ b/core/fpdfapi/parser/cpdf_parser.cpp |
@@ -598,9 +598,11 @@ bool CPDF_Parser::RebuildCrossRef() { |
bool bOverFlow = false; |
uint32_t size = |
std::min((uint32_t)(m_pSyntax->m_FileLen - pos), kBufferSize); |
- if (!m_pSyntax->m_pFileAccess->ReadBlock(buffer.data(), pos, size)) |
+ uint32_t readSize = |
+ m_pSyntax->m_pFileAccess->ReadBlock(buffer.data(), pos, size); |
+ if (readSize != size && !m_pSyntax->m_pFileAccess->IsEOF()) |
break; |
- |
+ size = readSize; |
for (uint32_t i = 0; i < size; i++) { |
uint8_t byte = buffer[i]; |
switch (state) { |