diff options
author | tsepez <tsepez@chromium.org> | 2016-12-07 09:21:17 -0800 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2016-12-07 09:21:18 -0800 |
commit | 833619b4441915c7c55085d44b3221eaef0d9800 (patch) | |
tree | 68bf76e83078223ba03f490c2c13f484e40154d4 /core/fpdfapi/edit/fpdf_edit_create.cpp | |
parent | 8f875507a986d10335e40a5f7c1679aff9770d0a (diff) | |
download | pdfium-833619b4441915c7c55085d44b3221eaef0d9800.tar.xz |
Refcount all the IFX_ stream classes all the time.
We can remove a lot of "bOwnsStream" logic in the process.
Always pass these by const reference, in case the called method
wants to hang on to the stream (one exception is where we stick
a raw pointer into a void* slot in a context from another layer).
Review-Url: https://codereview.chromium.org/2451493002
Diffstat (limited to 'core/fpdfapi/edit/fpdf_edit_create.cpp')
-rw-r--r-- | core/fpdfapi/edit/fpdf_edit_create.cpp | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/core/fpdfapi/edit/fpdf_edit_create.cpp b/core/fpdfapi/edit/fpdf_edit_create.cpp index b8757ae903..62314f43f5 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); } |