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