From afd0d1f488ea55da545b3310fd8f22e45522a695 Mon Sep 17 00:00:00 2001 From: Tom Sepez Date: Tue, 4 Apr 2017 14:37:18 -0700 Subject: RefCount CPDF_StreamAcc all the time. Pass stream argument to constructor; it feels like a stream accessor should always be made from a stream rather than passing one in after the fact. Change-Id: Iaa46cb37677b81f0170f5d39bab76ad38ea4af44 Reviewed-on: https://pdfium-review.googlesource.com/3620 Commit-Queue: Tom Sepez Reviewed-by: Lei Zhang --- core/fpdfapi/edit/fpdf_edit_create.cpp | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) (limited to 'core/fpdfapi/edit') diff --git a/core/fpdfapi/edit/fpdf_edit_create.cpp b/core/fpdfapi/edit/fpdf_edit_create.cpp index 59d3de35a9..d08e4b5302 100644 --- a/core/fpdfapi/edit/fpdf_edit_create.cpp +++ b/core/fpdfapi/edit/fpdf_edit_create.cpp @@ -182,12 +182,12 @@ int32_t PDF_CreatorAppendObject(const CPDF_Object* pObj, return -1; } offset += 8; - CPDF_StreamAcc acc; - acc.LoadAllData(p, true); - if (pFile->AppendBlock(acc.GetData(), acc.GetSize()) < 0) { + auto pAcc = pdfium::MakeRetain(p); + pAcc->LoadAllData(true); + if (pFile->AppendBlock(pAcc->GetData(), pAcc->GetSize()) < 0) { return -1; } - offset += acc.GetSize(); + offset += pAcc->GetSize(); if ((len = pFile->AppendString("\r\nendstream")) < 0) { return -1; } @@ -411,7 +411,7 @@ class CPDF_FlateEncoder { uint32_t m_dwSize; CFX_MaybeOwned m_pData; CFX_MaybeOwned m_pDict; - CPDF_StreamAcc m_Acc; + CFX_RetainPtr m_pAcc; }; void CPDF_FlateEncoder::CloneDict() { @@ -422,27 +422,27 @@ void CPDF_FlateEncoder::CloneDict() { } CPDF_FlateEncoder::CPDF_FlateEncoder(CPDF_Stream* pStream, bool bFlateEncode) - : m_dwSize(0) { - m_Acc.LoadAllData(pStream, true); + : m_dwSize(0), m_pAcc(pdfium::MakeRetain(pStream)) { + m_pAcc->LoadAllData(true); bool bHasFilter = pStream && pStream->HasFilter(); if (bHasFilter && !bFlateEncode) { - CPDF_StreamAcc destAcc; - destAcc.LoadAllData(pStream); - m_dwSize = destAcc.GetSize(); - m_pData = destAcc.DetachData(); + auto pDestAcc = pdfium::MakeRetain(pStream); + pDestAcc->LoadAllData(); + m_dwSize = pDestAcc->GetSize(); + m_pData = pDestAcc->DetachData(); m_pDict = ToDictionary(pStream->GetDict()->Clone()); m_pDict->RemoveFor("Filter"); return; } if (bHasFilter || !bFlateEncode) { - m_pData = const_cast(m_Acc.GetData()); - m_dwSize = m_Acc.GetSize(); + m_pData = const_cast(m_pAcc->GetData()); + m_dwSize = m_pAcc->GetSize(); m_pDict = pStream->GetDict(); return; } // TODO(thestig): Move to Init() and check return value. uint8_t* buffer = nullptr; - ::FlateEncode(m_Acc.GetData(), m_Acc.GetSize(), &buffer, &m_dwSize); + ::FlateEncode(m_pAcc->GetData(), m_pAcc->GetSize(), &buffer, &m_dwSize); m_pData = std::unique_ptr(buffer); m_pDict = ToDictionary(pStream->GetDict()->Clone()); m_pDict->SetNewFor("Length", static_cast(m_dwSize)); -- cgit v1.2.3