Index: core/fpdfapi/edit/fpdf_edit_create.cpp |
diff --git a/core/fpdfapi/edit/fpdf_edit_create.cpp b/core/fpdfapi/edit/fpdf_edit_create.cpp |
index a578a0a1141c81f80a64634c54c098b7ae428fed..1de9a577af22170ad457ec55e23358c577140768 100644 |
--- a/core/fpdfapi/edit/fpdf_edit_create.cpp |
+++ b/core/fpdfapi/edit/fpdf_edit_create.cpp |
@@ -1494,13 +1494,15 @@ int32_t CPDF_Creator::WriteDoc_Stage1(IFX_Pause* pPause) { |
uint32_t src_size = (uint32_t)(uintptr_t)m_Pos; |
while (src_size) { |
uint32_t block_size = src_size > 4096 ? 4096 : src_size; |
- if (!pSrcFile->ReadBlock(buffer, m_Offset - src_size, block_size)) { |
+ uint32_t read_size = |
+ pSrcFile->ReadBlock(buffer, m_Offset - src_size, block_size); |
+ if (read_size != block_size && !pSrcFile->IsEOF()) { |
return -1; |
} |
- if (m_File.AppendBlock(buffer, block_size) < 0) { |
+ if (m_File.AppendBlock(buffer, read_size) < 0) { |
return -1; |
} |
- src_size -= block_size; |
+ src_size -= read_size; |
if (pPause && pPause->NeedToPauseNow()) { |
m_Pos = (void*)(uintptr_t)src_size; |
return 1; |