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 =