Make CPDF_StreamAcc take retained arguments. This resolves a number of TODO()s, but introduces several calls to WrapRetain(), which will be removed when retain references are propagated upwards to callers. Change-Id: Iba53e1ba564c73db27095688ea6178706278ac8c Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/97774 Commit-Queue: Tom Sepez <tsepez@chromium.org> Reviewed-by: Lei Zhang <thestig@chromium.org>
diff --git a/core/fpdfapi/font/cpdf_cidfont.cpp b/core/fpdfapi/font/cpdf_cidfont.cpp index c90c15f..77e6a44 100644 --- a/core/fpdfapi/font/cpdf_cidfont.cpp +++ b/core/fpdfapi/font/cpdf_cidfont.cpp
@@ -21,6 +21,7 @@ #include "core/fpdfapi/font/cpdf_fontglobals.h" #include "core/fpdfapi/parser/cpdf_array.h" #include "core/fpdfapi/parser/cpdf_dictionary.h" +#include "core/fpdfapi/parser/cpdf_stream.h" #include "core/fpdfapi/parser/cpdf_stream_acc.h" #include "core/fxcrt/fx_codepage.h" #include "core/fxcrt/fx_memory.h" @@ -437,7 +438,8 @@ auto* pFontGlobals = CPDF_FontGlobals::GetInstance(); const CPDF_Stream* pEncodingStream = pEncoding->AsStream(); if (pEncodingStream) { - auto pAcc = pdfium::MakeRetain<CPDF_StreamAcc>(pEncodingStream); + auto pAcc = + pdfium::MakeRetain<CPDF_StreamAcc>(pdfium::WrapRetain(pEncodingStream)); pAcc->LoadAllDataFiltered(); pdfium::span<const uint8_t> span = pAcc->GetSpan(); m_pCMap = pdfium::MakeRetain<CPDF_CMap>(span); @@ -478,9 +480,9 @@ RetainPtr<const CPDF_Object> pmap = pCIDFontDict->GetDirectObjectFor("CIDToGIDMap"); if (pmap) { - const CPDF_Stream* pMapStream = pmap->AsStream(); + RetainPtr<const CPDF_Stream> pMapStream(pmap->AsStream()); if (pMapStream) { - m_pStreamAcc = pdfium::MakeRetain<CPDF_StreamAcc>(pMapStream); + m_pStreamAcc = pdfium::MakeRetain<CPDF_StreamAcc>(std::move(pMapStream)); m_pStreamAcc->LoadAllDataFiltered(); } else if (m_pFontFile && pmap->IsName() && pmap->GetString() == "Identity") {
diff --git a/core/fpdfapi/font/cpdf_tounicodemap.cpp b/core/fpdfapi/font/cpdf_tounicodemap.cpp index 5d7428a..e591d26 100644 --- a/core/fpdfapi/font/cpdf_tounicodemap.cpp +++ b/core/fpdfapi/font/cpdf_tounicodemap.cpp
@@ -122,7 +122,7 @@ void CPDF_ToUnicodeMap::Load(RetainPtr<const CPDF_Stream> pStream) { CIDSet cid_set = CIDSET_UNKNOWN; - auto pAcc = pdfium::MakeRetain<CPDF_StreamAcc>(pStream.Get()); + auto pAcc = pdfium::MakeRetain<CPDF_StreamAcc>(std::move(pStream)); pAcc->LoadAllDataFiltered(); CPDF_SimpleParser parser(pAcc->GetSpan()); while (true) {
diff --git a/core/fpdfapi/page/cpdf_contentparser.cpp b/core/fpdfapi/page/cpdf_contentparser.cpp index 3ad7bee..d830143 100644 --- a/core/fpdfapi/page/cpdf_contentparser.cpp +++ b/core/fpdfapi/page/cpdf_contentparser.cpp
@@ -111,7 +111,8 @@ pState->SetFillAlpha(1.0f); pState->SetSoftMask(nullptr); } - m_pSingleStream = pdfium::MakeRetain<CPDF_StreamAcc>(pForm->GetStream()); + m_pSingleStream = pdfium::MakeRetain<CPDF_StreamAcc>( + pdfium::WrapRetain(pForm->GetStream())); m_pSingleStream->LoadAllDataFiltered(); m_Data = m_pSingleStream->GetSpan(); } @@ -152,7 +153,7 @@ RetainPtr<const CPDF_Stream> pStreamObj = ToStream( pContent ? pContent->GetDirectObjectAt(m_CurrentOffset) : nullptr); m_StreamArray[m_CurrentOffset] = - pdfium::MakeRetain<CPDF_StreamAcc>(pStreamObj.Get()); + pdfium::MakeRetain<CPDF_StreamAcc>(std::move(pStreamObj)); m_StreamArray[m_CurrentOffset]->LoadAllDataFiltered(); m_CurrentOffset++; @@ -247,7 +248,8 @@ } void CPDF_ContentParser::HandlePageContentStream(const CPDF_Stream* pStream) { - m_pSingleStream = pdfium::MakeRetain<CPDF_StreamAcc>(pStream); + m_pSingleStream = + pdfium::MakeRetain<CPDF_StreamAcc>(pdfium::WrapRetain(pStream)); m_pSingleStream->LoadAllDataFiltered(); m_CurrentStage = Stage::kPrepareContent; }
diff --git a/core/fpdfapi/page/cpdf_dib.cpp b/core/fpdfapi/page/cpdf_dib.cpp index 3241e42..4138929 100644 --- a/core/fpdfapi/page/cpdf_dib.cpp +++ b/core/fpdfapi/page/cpdf_dib.cpp
@@ -267,7 +267,7 @@ RetainPtr<const CPDF_Stream> pGlobals = m_pStreamAcc->GetImageParam()->GetStreamFor("JBIG2Globals"); if (pGlobals) { - m_pGlobalAcc = pdfium::MakeRetain<CPDF_StreamAcc>(pGlobals.Get()); + m_pGlobalAcc = pdfium::MakeRetain<CPDF_StreamAcc>(std::move(pGlobals)); m_pGlobalAcc->LoadAllDataFiltered(); } } @@ -729,7 +729,7 @@ if (!src_size.IsValid()) return false; - m_pStreamAcc = pdfium::MakeRetain<CPDF_StreamAcc>(m_pStream.Get()); + m_pStreamAcc = pdfium::MakeRetain<CPDF_StreamAcc>(m_pStream); m_pStreamAcc->LoadAllDataImageAcc(src_size.ValueOrDie()); return !m_pStreamAcc->GetSpan().empty(); }
diff --git a/core/fpdfapi/page/cpdf_docpagedata.cpp b/core/fpdfapi/page/cpdf_docpagedata.cpp index 215ec0a..3318c53 100644 --- a/core/fpdfapi/page/cpdf_docpagedata.cpp +++ b/core/fpdfapi/page/cpdf_docpagedata.cpp
@@ -399,7 +399,8 @@ if (it != m_IccProfileMap.end() && it->second) return pdfium::WrapRetain(it->second.Get()); - auto pAccessor = pdfium::MakeRetain<CPDF_StreamAcc>(pProfileStream); + auto pAccessor = + pdfium::MakeRetain<CPDF_StreamAcc>(pdfium::WrapRetain(pProfileStream)); pAccessor->LoadAllDataFiltered(); ByteString bsDigest = pAccessor->ComputeDigest(); @@ -435,7 +436,7 @@ org_size = safe_org_size.ValueOrDefault(0); } - auto pFontAcc = pdfium::MakeRetain<CPDF_StreamAcc>(pFontStream.Get()); + auto pFontAcc = pdfium::MakeRetain<CPDF_StreamAcc>(pFontStream); pFontAcc->LoadAllDataFilteredWithEstimatedSize(org_size); m_FontFileMap[pFontStream.Get()] = pFontAcc; return pFontAcc;
diff --git a/core/fpdfapi/page/cpdf_indexedcs.cpp b/core/fpdfapi/page/cpdf_indexedcs.cpp index c8c7770..bc112a5 100644 --- a/core/fpdfapi/page/cpdf_indexedcs.cpp +++ b/core/fpdfapi/page/cpdf_indexedcs.cpp
@@ -67,7 +67,7 @@ if (const CPDF_String* pString = pTableObj->AsString()) { m_Table = pString->GetString(); } else if (const CPDF_Stream* pStream = pTableObj->AsStream()) { - auto pAcc = pdfium::MakeRetain<CPDF_StreamAcc>(pStream); + auto pAcc = pdfium::MakeRetain<CPDF_StreamAcc>(pdfium::WrapRetain(pStream)); pAcc->LoadAllDataFiltered(); m_Table = ByteStringView(pAcc->GetSpan()); }
diff --git a/core/fpdfapi/page/cpdf_meshstream.cpp b/core/fpdfapi/page/cpdf_meshstream.cpp index 5a46f8b..6a68a97 100644 --- a/core/fpdfapi/page/cpdf_meshstream.cpp +++ b/core/fpdfapi/page/cpdf_meshstream.cpp
@@ -104,7 +104,8 @@ m_funcs(funcs), m_pShadingStream(pShadingStream), m_pCS(pCS), - m_pStream(pdfium::MakeRetain<CPDF_StreamAcc>(pShadingStream)) {} + m_pStream(pdfium::MakeRetain<CPDF_StreamAcc>( + pdfium::WrapRetain(pShadingStream))) {} CPDF_MeshStream::~CPDF_MeshStream() = default;
diff --git a/core/fpdfapi/page/cpdf_psfunc.cpp b/core/fpdfapi/page/cpdf_psfunc.cpp index b365cee..bd91956 100644 --- a/core/fpdfapi/page/cpdf_psfunc.cpp +++ b/core/fpdfapi/page/cpdf_psfunc.cpp
@@ -15,7 +15,8 @@ bool CPDF_PSFunc::v_Init(const CPDF_Object* pObj, std::set<const CPDF_Object*>* pVisited) { - auto pAcc = pdfium::MakeRetain<CPDF_StreamAcc>(pObj->AsStream()); + auto pAcc = + pdfium::MakeRetain<CPDF_StreamAcc>(pdfium::WrapRetain(pObj->AsStream())); pAcc->LoadAllDataFiltered(); return m_PS.Parse(pAcc->GetSpan()); }
diff --git a/core/fpdfapi/page/cpdf_sampledfunc.cpp b/core/fpdfapi/page/cpdf_sampledfunc.cpp index 3f405c2..dac7aab 100644 --- a/core/fpdfapi/page/cpdf_sampledfunc.cpp +++ b/core/fpdfapi/page/cpdf_sampledfunc.cpp
@@ -6,6 +6,8 @@ #include "core/fpdfapi/page/cpdf_sampledfunc.h" +#include <utility> + #include "core/fpdfapi/parser/cpdf_array.h" #include "core/fpdfapi/parser/cpdf_dictionary.h" #include "core/fpdfapi/parser/cpdf_stream.h" @@ -42,7 +44,7 @@ bool CPDF_SampledFunc::v_Init(const CPDF_Object* pObj, std::set<const CPDF_Object*>* pVisited) { - const CPDF_Stream* pStream = pObj->AsStream(); + RetainPtr<const CPDF_Stream> pStream(pObj->AsStream()); if (!pStream) return false; @@ -80,7 +82,7 @@ return false; m_SampleMax = 0xffffffff >> (32 - m_nBitsPerSample); - m_pSampleStream = pdfium::MakeRetain<CPDF_StreamAcc>(pStream); + m_pSampleStream = pdfium::MakeRetain<CPDF_StreamAcc>(std::move(pStream)); m_pSampleStream->LoadAllDataFiltered(); if (nTotalSampleBytes.ValueOrDie() > m_pSampleStream->GetSize()) return false;
diff --git a/core/fpdfapi/parser/cpdf_crypto_handler.cpp b/core/fpdfapi/parser/cpdf_crypto_handler.cpp index 8ac08c7..bb49ab9 100644 --- a/core/fpdfapi/parser/cpdf_crypto_handler.cpp +++ b/core/fpdfapi/parser/cpdf_crypto_handler.cpp
@@ -267,7 +267,8 @@ if (child->IsStream()) { // TODO(art-snake): Move decryption into the CPDF_Stream class. CPDF_Stream* stream = child->AsMutableStream(); - auto stream_access = pdfium::MakeRetain<CPDF_StreamAcc>(stream); + auto stream_access = + pdfium::MakeRetain<CPDF_StreamAcc>(pdfium::WrapRetain(stream)); stream_access->LoadAllDataRaw(); if (IsCipherAES() && stream_access->GetSize() < 16) {
diff --git a/core/fpdfapi/parser/cpdf_flateencoder.cpp b/core/fpdfapi/parser/cpdf_flateencoder.cpp index 5343e48..a850e20 100644 --- a/core/fpdfapi/parser/cpdf_flateencoder.cpp +++ b/core/fpdfapi/parser/cpdf_flateencoder.cpp
@@ -18,12 +18,13 @@ CPDF_FlateEncoder::CPDF_FlateEncoder(const CPDF_Stream* pStream, bool bFlateEncode) - : m_pAcc(pdfium::MakeRetain<CPDF_StreamAcc>(pStream)) { + : m_pAcc(pdfium::MakeRetain<CPDF_StreamAcc>(pdfium::WrapRetain(pStream))) { m_pAcc->LoadAllDataRaw(); bool bHasFilter = pStream->HasFilter(); if (bHasFilter && !bFlateEncode) { - auto pDestAcc = pdfium::MakeRetain<CPDF_StreamAcc>(pStream); + auto pDestAcc = + pdfium::MakeRetain<CPDF_StreamAcc>(pdfium::WrapRetain(pStream)); pDestAcc->LoadAllDataFiltered(); m_Data = m_pAcc->GetSpan();
diff --git a/core/fpdfapi/parser/cpdf_hint_tables.cpp b/core/fpdfapi/parser/cpdf_hint_tables.cpp index 4c2e1b1..7b881a4 100644 --- a/core/fpdfapi/parser/cpdf_hint_tables.cpp +++ b/core/fpdfapi/parser/cpdf_hint_tables.cpp
@@ -454,7 +454,8 @@ if (shared_hint_table_offset <= 0) return false; - auto pAcc = pdfium::MakeRetain<CPDF_StreamAcc>(pHintStream); + auto pAcc = + pdfium::MakeRetain<CPDF_StreamAcc>(pdfium::WrapRetain(pHintStream)); pAcc->LoadAllDataFiltered(); uint32_t size = pAcc->GetSize();
diff --git a/core/fpdfapi/parser/cpdf_object_stream.cpp b/core/fpdfapi/parser/cpdf_object_stream.cpp index 3a55e4f..47b6b1a 100644 --- a/core/fpdfapi/parser/cpdf_object_stream.cpp +++ b/core/fpdfapi/parser/cpdf_object_stream.cpp
@@ -63,7 +63,8 @@ } CPDF_ObjectStream::CPDF_ObjectStream(const CPDF_Stream* obj_stream) - : stream_acc_(pdfium::MakeRetain<CPDF_StreamAcc>(obj_stream)), + : stream_acc_( + pdfium::MakeRetain<CPDF_StreamAcc>(pdfium::WrapRetain(obj_stream))), first_object_offset_(obj_stream->GetDict()->GetIntegerFor("First")) { DCHECK(IsObjectStream(obj_stream)); Init(obj_stream);
diff --git a/core/fpdfapi/parser/cpdf_object_unittest.cpp b/core/fpdfapi/parser/cpdf_object_unittest.cpp index b80a986..9b51905 100644 --- a/core/fpdfapi/parser/cpdf_object_unittest.cpp +++ b/core/fpdfapi/parser/cpdf_object_unittest.cpp
@@ -157,17 +157,19 @@ case CPDF_Object::kNullobj: return true; case CPDF_Object::kStream: { - const CPDF_Stream* stream1 = obj1->AsStream(); - const CPDF_Stream* stream2 = obj2->AsStream(); + RetainPtr<const CPDF_Stream> stream1(obj1->AsStream()); + RetainPtr<const CPDF_Stream> stream2(obj2->AsStream()); if (!stream1->GetDict() && !stream2->GetDict()) return true; // Compare dictionaries. if (!Equal(stream1->GetDict(), stream2->GetDict())) return false; - auto streamAcc1 = pdfium::MakeRetain<CPDF_StreamAcc>(stream1); + auto streamAcc1 = + pdfium::MakeRetain<CPDF_StreamAcc>(std::move(stream1)); streamAcc1->LoadAllDataRaw(); - auto streamAcc2 = pdfium::MakeRetain<CPDF_StreamAcc>(stream2); + auto streamAcc2 = + pdfium::MakeRetain<CPDF_StreamAcc>(std::move(stream2)); streamAcc2->LoadAllDataRaw(); pdfium::span<const uint8_t> span1 = streamAcc1->GetSpan(); pdfium::span<const uint8_t> span2 = streamAcc2->GetSpan();
diff --git a/core/fpdfapi/parser/cpdf_parser.cpp b/core/fpdfapi/parser/cpdf_parser.cpp index 471ea97..038a711 100644 --- a/core/fpdfapi/parser/cpdf_parser.cpp +++ b/core/fpdfapi/parser/cpdf_parser.cpp
@@ -725,7 +725,7 @@ if (!pObject || !pObject->GetObjNum()) return false; - const CPDF_Stream* pStream = pObject->AsStream(); + RetainPtr<const CPDF_Stream> pStream(pObject->AsStream()); if (!pStream) return false; @@ -765,7 +765,7 @@ return false; uint32_t total_width = dwAccWidth.ValueOrDie(); - auto pAcc = pdfium::MakeRetain<CPDF_StreamAcc>(pStream); + auto pAcc = pdfium::MakeRetain<CPDF_StreamAcc>(std::move(pStream)); pAcc->LoadAllDataFiltered(); pdfium::span<const uint8_t> data_span = pAcc->GetSpan();
diff --git a/core/fpdfapi/parser/cpdf_seekablemultistream.cpp b/core/fpdfapi/parser/cpdf_seekablemultistream.cpp index b3545c3..2e5f7fd 100644 --- a/core/fpdfapi/parser/cpdf_seekablemultistream.cpp +++ b/core/fpdfapi/parser/cpdf_seekablemultistream.cpp
@@ -8,6 +8,7 @@ #include <algorithm> +#include "core/fpdfapi/parser/cpdf_stream.h" #include "core/fpdfapi/parser/cpdf_stream_acc.h" #include "core/fxcrt/fx_safe_types.h" #include "core/fxcrt/span_util.h" @@ -17,7 +18,8 @@ CPDF_SeekableMultiStream::CPDF_SeekableMultiStream( const std::vector<const CPDF_Stream*>& streams) { for (const CPDF_Stream* pStream : streams) { - m_Data.push_back(pdfium::MakeRetain<CPDF_StreamAcc>(pStream)); + m_Data.push_back( + pdfium::MakeRetain<CPDF_StreamAcc>(pdfium::WrapRetain(pStream))); m_Data.back()->LoadAllDataFiltered(); } }
diff --git a/core/fpdfapi/parser/cpdf_stream.cpp b/core/fpdfapi/parser/cpdf_stream.cpp index 57ec20c..ca41f30 100644 --- a/core/fpdfapi/parser/cpdf_stream.cpp +++ b/core/fpdfapi/parser/cpdf_stream.cpp
@@ -100,7 +100,7 @@ bool bDirect, std::set<const CPDF_Object*>* pVisited) const { pVisited->insert(this); - auto pAcc = pdfium::MakeRetain<CPDF_StreamAcc>(this); + auto pAcc = pdfium::MakeRetain<CPDF_StreamAcc>(pdfium::WrapRetain(this)); pAcc->LoadAllDataRaw(); uint32_t streamSize = pAcc->GetSize(); @@ -182,7 +182,7 @@ } WideString CPDF_Stream::GetUnicodeText() const { - auto pAcc = pdfium::MakeRetain<CPDF_StreamAcc>(this); + auto pAcc = pdfium::MakeRetain<CPDF_StreamAcc>(pdfium::WrapRetain(this)); pAcc->LoadAllDataFiltered(); return PDF_DecodeText(pAcc->GetSpan()); }
diff --git a/core/fpdfapi/parser/cpdf_stream_acc.cpp b/core/fpdfapi/parser/cpdf_stream_acc.cpp index 27de211..cdc8c41 100644 --- a/core/fpdfapi/parser/cpdf_stream_acc.cpp +++ b/core/fpdfapi/parser/cpdf_stream_acc.cpp
@@ -27,8 +27,8 @@ CPDF_StreamAcc::OwnedData::~OwnedData() = default; -CPDF_StreamAcc::CPDF_StreamAcc(const CPDF_Stream* pStream) - : m_pStream(pStream) {} +CPDF_StreamAcc::CPDF_StreamAcc(RetainPtr<const CPDF_Stream> pStream) + : m_pStream(std::move(pStream)) {} CPDF_StreamAcc::~CPDF_StreamAcc() = default;
diff --git a/core/fpdfapi/parser/cpdf_stream_acc.h b/core/fpdfapi/parser/cpdf_stream_acc.h index 44b77c1..5db2923 100644 --- a/core/fpdfapi/parser/cpdf_stream_acc.h +++ b/core/fpdfapi/parser/cpdf_stream_acc.h
@@ -54,7 +54,7 @@ uint32_t size; }; - explicit CPDF_StreamAcc(const CPDF_Stream* pStream); + explicit CPDF_StreamAcc(RetainPtr<const CPDF_Stream> pStream); ~CPDF_StreamAcc() override; void LoadAllData(bool bRawAccess, uint32_t estimated_size, bool bImageAcc);
diff --git a/core/fpdfapi/parser/cpdf_stream_acc_unittest.cpp b/core/fpdfapi/parser/cpdf_stream_acc_unittest.cpp index f2dd458..3f8ec64 100644 --- a/core/fpdfapi/parser/cpdf_stream_acc_unittest.cpp +++ b/core/fpdfapi/parser/cpdf_stream_acc_unittest.cpp
@@ -4,6 +4,8 @@ #include "core/fpdfapi/parser/cpdf_stream_acc.h" +#include <utility> + #include "core/fpdfapi/parser/cpdf_dictionary.h" #include "core/fpdfapi/parser/cpdf_stream.h" #include "core/fxcrt/fx_stream.h" @@ -15,7 +17,7 @@ stream->InitStreamFromFile( pdfium::MakeRetain<InvalidSeekableReadStream>(1024), pdfium::MakeRetain<CPDF_Dictionary>()); - auto stream_acc = pdfium::MakeRetain<CPDF_StreamAcc>(stream.Get()); + auto stream_acc = pdfium::MakeRetain<CPDF_StreamAcc>(std::move(stream)); stream_acc->LoadAllDataRaw(); EXPECT_TRUE(stream_acc->GetSpan().empty()); } @@ -26,7 +28,7 @@ constexpr uint8_t kData[] = {'a', 'b', 'c'}; auto stream = pdfium::MakeRetain<CPDF_Stream>(); stream->SetData(kData); - auto stream_acc = pdfium::MakeRetain<CPDF_StreamAcc>(stream.Get()); + auto stream_acc = pdfium::MakeRetain<CPDF_StreamAcc>(stream); stream_acc->LoadAllDataRaw(); stream.Reset(); EXPECT_EQ(pdfium::make_span(kData), stream_acc->GetSpan());
diff --git a/core/fpdfapi/parser/fpdf_parser_utility.cpp b/core/fpdfapi/parser/fpdf_parser_utility.cpp index 949e1de..7ebbb3b 100644 --- a/core/fpdfapi/parser/fpdf_parser_utility.cpp +++ b/core/fpdfapi/parser/fpdf_parser_utility.cpp
@@ -7,6 +7,7 @@ #include "core/fpdfapi/parser/fpdf_parser_utility.h" #include <ostream> +#include <utility> #include "core/fpdfapi/parser/cpdf_array.h" #include "core/fpdfapi/parser/cpdf_boolean.h" @@ -243,9 +244,9 @@ break; } case CPDF_Object::kStream: { - const CPDF_Stream* p = pObj->AsStream(); + RetainPtr<const CPDF_Stream> p(pObj->AsStream()); buf << p->GetDict() << "stream\r\n"; - auto pAcc = pdfium::MakeRetain<CPDF_StreamAcc>(p); + auto pAcc = pdfium::MakeRetain<CPDF_StreamAcc>(std::move(p)); pAcc->LoadAllDataRaw(); pdfium::span<const uint8_t> span = pAcc->GetSpan(); buf.write(reinterpret_cast<const char*>(span.data()), span.size());
diff --git a/core/fpdfdoc/cpdf_metadata.cpp b/core/fpdfdoc/cpdf_metadata.cpp index 6a8bfec..6a58ac0 100644 --- a/core/fpdfdoc/cpdf_metadata.cpp +++ b/core/fpdfdoc/cpdf_metadata.cpp
@@ -70,7 +70,7 @@ CPDF_Metadata::~CPDF_Metadata() = default; std::vector<UnsupportedFeature> CPDF_Metadata::CheckForSharedForm() const { - auto pAcc = pdfium::MakeRetain<CPDF_StreamAcc>(stream_.Get()); + auto pAcc = pdfium::MakeRetain<CPDF_StreamAcc>(stream_); pAcc->LoadAllDataFiltered(); auto stream = pdfium::MakeRetain<CFX_ReadOnlySpanStream>(pAcc->GetSpan());
diff --git a/fpdfsdk/cpdfsdk_helpers.cpp b/fpdfsdk/cpdfsdk_helpers.cpp index 2cf0dcf..aadc41b 100644 --- a/fpdfsdk/cpdfsdk_helpers.cpp +++ b/fpdfsdk/cpdfsdk_helpers.cpp
@@ -58,7 +58,8 @@ unsigned long buflen, bool decode) { DCHECK(stream); - auto stream_acc = pdfium::MakeRetain<CPDF_StreamAcc>(stream); + auto stream_acc = + pdfium::MakeRetain<CPDF_StreamAcc>(pdfium::WrapRetain(stream)); if (decode) stream_acc->LoadAllDataFiltered();
diff --git a/fpdfsdk/fpdf_edit_embeddertest.cpp b/fpdfsdk/fpdf_edit_embeddertest.cpp index 8fd558a..642fad9 100644 --- a/fpdfsdk/fpdf_edit_embeddertest.cpp +++ b/fpdfsdk/fpdf_edit_embeddertest.cpp
@@ -135,8 +135,8 @@ EXPECT_TRUE(font_desc->KeyExist(present)); EXPECT_FALSE(font_desc->KeyExist(absent)); - auto streamAcc = pdfium::MakeRetain<CPDF_StreamAcc>( - font_desc->GetStreamFor(present).Get()); + auto streamAcc = + pdfium::MakeRetain<CPDF_StreamAcc>(font_desc->GetStreamFor(present)); streamAcc->LoadAllDataRaw(); // Check that the font stream is the one that was provided
diff --git a/fpdfsdk/fpdf_flatten.cpp b/fpdfsdk/fpdf_flatten.cpp index eb51238..c078fc0 100644 --- a/fpdfsdk/fpdf_flatten.cpp +++ b/fpdfsdk/fpdf_flatten.cpp
@@ -214,7 +214,7 @@ } else { ByteString sStream = "q\n"; { - auto pAcc = pdfium::MakeRetain<CPDF_StreamAcc>(pContentsStream.Get()); + auto pAcc = pdfium::MakeRetain<CPDF_StreamAcc>(pContentsStream); pAcc->LoadAllDataFiltered(); sStream += ByteString(pAcc->GetSpan()); sStream += "\nQ"; @@ -400,7 +400,8 @@ ByteString sStream; { - auto pAcc = pdfium::MakeRetain<CPDF_StreamAcc>(pNewXObject); + auto pAcc = + pdfium::MakeRetain<CPDF_StreamAcc>(pdfium::WrapRetain(pNewXObject)); pAcc->LoadAllDataFiltered(); sStream = ByteString(pAcc->GetSpan()); }
diff --git a/fpdfsdk/fpdf_ppo.cpp b/fpdfsdk/fpdf_ppo.cpp index 77ccc52..083d326 100644 --- a/fpdfsdk/fpdf_ppo.cpp +++ b/fpdfsdk/fpdf_ppo.cpp
@@ -627,14 +627,15 @@ if (pSrcContentArray) { for (size_t i = 0; i < pSrcContentArray->size(); ++i) { RetainPtr<const CPDF_Stream> pStream = pSrcContentArray->GetStreamAt(i); - auto pAcc = pdfium::MakeRetain<CPDF_StreamAcc>(pStream.Get()); + auto pAcc = pdfium::MakeRetain<CPDF_StreamAcc>(std::move(pStream)); pAcc->LoadAllDataFiltered(); bsSrcContentStream += ByteString(pAcc->GetSpan()); bsSrcContentStream += "\n"; } } else { const CPDF_Stream* pStream = pSrcContentObj->AsStream(); - auto pAcc = pdfium::MakeRetain<CPDF_StreamAcc>(pStream); + auto pAcc = + pdfium::MakeRetain<CPDF_StreamAcc>(pdfium::WrapRetain(pStream)); pAcc->LoadAllDataFiltered(); bsSrcContentStream = ByteString(pAcc->GetSpan()); }
diff --git a/fpdfsdk/fpdfxfa/cpdfxfa_docenvironment.cpp b/fpdfsdk/fpdfxfa/cpdfxfa_docenvironment.cpp index 2e0bbfe..02e4fcf 100644 --- a/fpdfsdk/fpdfxfa/cpdfxfa_docenvironment.cpp +++ b/fpdfsdk/fpdfxfa/cpdfxfa_docenvironment.cpp
@@ -503,8 +503,7 @@ ByteString content = ByteString::Format(kFormat, bPath.c_str()); fileWrite->WriteString(content.AsStringView()); } - // TODO(tsepez): stream acc should take a retained object. - auto pAcc = pdfium::MakeRetain<CPDF_StreamAcc>(pStream.Get()); + auto pAcc = pdfium::MakeRetain<CPDF_StreamAcc>(std::move(pStream)); pAcc->LoadAllDataFiltered(); pdfium::span<const uint8_t> span = pAcc->GetSpan(); fileWrite->WriteBlock(span.data(), span.size());
diff --git a/xfa/fxfa/cxfa_ffdoc.cpp b/xfa/fxfa/cxfa_ffdoc.cpp index a7597b9..e16e7e6 100644 --- a/xfa/fxfa/cxfa_ffdoc.cpp +++ b/xfa/fxfa/cxfa_ffdoc.cpp
@@ -8,6 +8,7 @@ #include <algorithm> #include <memory> +#include <utility> #include "core/fpdfapi/parser/cpdf_dictionary.h" #include "core/fpdfapi/parser/cpdf_document.h" @@ -296,8 +297,7 @@ if (!pStream) return nullptr; - // TODO(tsepez): make CPDF_StreamAcc constructor take retained argument. - auto pAcc = pdfium::MakeRetain<CPDF_StreamAcc>(pStream.Get()); + auto pAcc = pdfium::MakeRetain<CPDF_StreamAcc>(std::move(pStream)); pAcc->LoadAllDataFiltered(); auto pImageFileRead =