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 b8757ae90382dcb78af65955f4b5d68e4a9b0230..62314f43f55a165ca29aff11d55a85f87dbd3b7e 100644 |
--- a/core/fpdfapi/edit/fpdf_edit_create.cpp |
+++ b/core/fpdfapi/edit/fpdf_edit_create.cpp |
@@ -1479,7 +1479,8 @@ int32_t CPDF_Creator::WriteDoc_Stage1(IFX_Pause* pPause) { |
InitOldObjNumOffsets(); |
m_iStage = 20; |
} else { |
- IFX_SeekableReadStream* pSrcFile = m_pParser->GetFileAccess(); |
+ CFX_RetainPtr<IFX_SeekableReadStream> pSrcFile = |
+ m_pParser->GetFileAccess(); |
m_Offset = pSrcFile->GetSize(); |
m_Pos = (void*)(uintptr_t)m_Offset; |
m_iStage = 15; |
@@ -1487,8 +1488,9 @@ int32_t CPDF_Creator::WriteDoc_Stage1(IFX_Pause* pPause) { |
} |
if (m_iStage == 15) { |
if ((m_dwFlags & FPDFCREATE_NO_ORIGINAL) == 0 && m_Pos) { |
- IFX_SeekableReadStream* pSrcFile = m_pParser->GetFileAccess(); |
- uint8_t buffer[4096]; |
+ CFX_RetainPtr<IFX_SeekableReadStream> pSrcFile = |
+ m_pParser->GetFileAccess(); |
+ uint8_t buffer[4096]; // TODO(tsepez): don't stack allocate. |
uint32_t src_size = (uint32_t)(uintptr_t)m_Pos; |
while (src_size) { |
uint32_t block_size = src_size > 4096 ? 4096 : src_size; |
@@ -1904,7 +1906,8 @@ void CPDF_Creator::Clear() { |
m_pIDArray.reset(); |
} |
-bool CPDF_Creator::Create(IFX_WriteStream* pFile, uint32_t flags) { |
+bool CPDF_Creator::Create(const CFX_RetainPtr<IFX_WriteStream>& pFile, |
+ uint32_t flags) { |
m_File.AttachFile(pFile); |
return Create(flags); |
} |