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 --- fpdfsdk/fpdf_flatten.cpp | 14 ++++++-------- fpdfsdk/fpdfsave.cpp | 10 ++++------ fpdfsdk/fpdfxfa/cpdfxfa_docenvironment.cpp | 4 ++-- 3 files changed, 12 insertions(+), 16 deletions(-) (limited to 'fpdfsdk') diff --git a/fpdfsdk/fpdf_flatten.cpp b/fpdfsdk/fpdf_flatten.cpp index 8e181eb380..31b838cd94 100644 --- a/fpdfsdk/fpdf_flatten.cpp +++ b/fpdfsdk/fpdf_flatten.cpp @@ -204,11 +204,11 @@ void SetPageContents(const CFX_ByteString& key, pPage->ConvertToIndirectObjectFor("Contents", pDocument); if (!pContentsArray) { pContentsArray = pDocument->NewIndirect(); - CPDF_StreamAcc acc; - acc.LoadAllData(pContentsStream); + auto pAcc = pdfium::MakeRetain(pContentsStream); + pAcc->LoadAllData(); CFX_ByteString sStream = "q\n"; CFX_ByteString sBody = - CFX_ByteString((const char*)acc.GetData(), acc.GetSize()); + CFX_ByteString((const char*)pAcc->GetData(), pAcc->GetSize()); sStream = sStream + sBody + "\nQ"; pContentsStream->SetData(sStream.raw_str(), sStream.GetLength()); pContentsArray->AddNew(pDocument, @@ -402,11 +402,9 @@ DLLEXPORT int STDCALL FPDFPage_Flatten(FPDF_PAGE page, int nFlag) { pXObject->SetNewFor(sFormName, pDocument, pObj->GetObjNum()); - CPDF_StreamAcc acc; - acc.LoadAllData(pNewXObject); - - const uint8_t* pData = acc.GetData(); - CFX_ByteString sStream(pData, acc.GetSize()); + auto pAcc = pdfium::MakeRetain(pNewXObject); + pAcc->LoadAllData(); + CFX_ByteString sStream(pAcc->GetData(), pAcc->GetSize()); CFX_Matrix matrix = pAPDic->GetMatrixFor("Matrix"); if (matrix.IsIdentity()) { matrix.a = 1.0f; diff --git a/fpdfsdk/fpdfsave.cpp b/fpdfsdk/fpdfsave.cpp index 6894f8c2ed..004c921a52 100644 --- a/fpdfsdk/fpdfsave.cpp +++ b/fpdfsdk/fpdfsave.cpp @@ -137,12 +137,10 @@ bool SaveXFADocumentData( // template if (iTemplate > -1) { CPDF_Stream* pTemplateStream = pArray->GetStreamAt(iTemplate); - CPDF_StreamAcc streamAcc; - streamAcc.LoadAllData(pTemplateStream); - uint8_t* pData = (uint8_t*)streamAcc.GetData(); - uint32_t dwSize2 = streamAcc.GetSize(); - CFX_RetainPtr pTemplate = - IFX_MemoryStream::Create(pData, dwSize2); + auto pAcc = pdfium::MakeRetain(pTemplateStream); + pAcc->LoadAllData(); + CFX_RetainPtr pTemplate = IFX_MemoryStream::Create( + const_cast(pAcc->GetData()), pAcc->GetSize()); pChecksum->UpdateChecksum(pTemplate); } CPDF_Stream* pFormStream = nullptr; diff --git a/fpdfsdk/fpdfxfa/cpdfxfa_docenvironment.cpp b/fpdfsdk/fpdfxfa/cpdfxfa_docenvironment.cpp index 4c8591e2eb..bd16f43ffc 100644 --- a/fpdfsdk/fpdfxfa/cpdfxfa_docenvironment.cpp +++ b/fpdfsdk/fpdfxfa/cpdfxfa_docenvironment.cpp @@ -497,8 +497,8 @@ void CPDFXFA_DocEnvironment::ExportData(CXFA_FFDoc* hDoc, fileWrite->WriteBlock(content.c_str(), fileWrite->GetSize(), content.GetLength()); } - auto pAcc = pdfium::MakeUnique(); - pAcc->LoadAllData(pStream); + auto pAcc = pdfium::MakeRetain(pStream); + pAcc->LoadAllData(); fileWrite->WriteBlock(pAcc->GetData(), fileWrite->GetSize(), pAcc->GetSize()); } -- cgit v1.2.3