Make CPDF_StreamAcc::GetData() private.
Change callers to use CPDF_StreamAcc::GetSpan() instead.
Change-Id: I7196b5064a4ab8d1980df590e33163c742bae34c
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/97471
Commit-Queue: Lei Zhang <thestig@chromium.org>
Reviewed-by: Tom Sepez <tsepez@chromium.org>
diff --git a/core/fpdfapi/font/cpdf_cidfont.cpp b/core/fpdfapi/font/cpdf_cidfont.cpp
index d5d8b2e..a5f2e7c 100644
--- a/core/fpdfapi/font/cpdf_cidfont.cpp
+++ b/core/fpdfapi/font/cpdf_cidfont.cpp
@@ -810,8 +810,8 @@
if (byte_pos + 2 > m_pStreamAcc->GetSize())
return -1;
- const uint8_t* pdata = m_pStreamAcc->GetData() + byte_pos;
- return pdata[0] * 256 + pdata[1];
+ pdfium::span<const uint8_t> span = m_pStreamAcc->GetSpan().subspan(byte_pos);
+ return span[0] * 256 + span[1];
}
uint32_t CPDF_CIDFont::GetNextChar(ByteStringView pString,
diff --git a/core/fpdfapi/page/cpdf_dib.cpp b/core/fpdfapi/page/cpdf_dib.cpp
index 32f2198..f6256c9 100644
--- a/core/fpdfapi/page/cpdf_dib.cpp
+++ b/core/fpdfapi/page/cpdf_dib.cpp
@@ -730,10 +730,7 @@
m_pStreamAcc = pdfium::MakeRetain<CPDF_StreamAcc>(m_pStream.Get());
m_pStreamAcc->LoadAllDataImageAcc(src_size.ValueOrDie());
- if (m_pStreamAcc->GetSize() == 0 || !m_pStreamAcc->GetData())
- return false;
-
- return true;
+ return !m_pStreamAcc->GetSpan().empty();
}
CPDF_DIB::LoadState CPDF_DIB::StartLoadMask() {
diff --git a/core/fpdfapi/parser/cpdf_object_unittest.cpp b/core/fpdfapi/parser/cpdf_object_unittest.cpp
index 899e06f..b7e0ea0 100644
--- a/core/fpdfapi/parser/cpdf_object_unittest.cpp
+++ b/core/fpdfapi/parser/cpdf_object_unittest.cpp
@@ -167,13 +167,14 @@
streamAcc1->LoadAllDataRaw();
auto streamAcc2 = pdfium::MakeRetain<CPDF_StreamAcc>(stream2);
streamAcc2->LoadAllDataRaw();
+ pdfium::span<const uint8_t> span1 = streamAcc1->GetSpan();
+ pdfium::span<const uint8_t> span2 = streamAcc2->GetSpan();
// Compare sizes.
- if (streamAcc1->GetSize() != streamAcc2->GetSize())
+ if (span1.size() != span2.size())
return false;
- return memcmp(streamAcc1->GetData(), streamAcc2->GetData(),
- streamAcc2->GetSize()) == 0;
+ return memcmp(span1.data(), span2.data(), span2.size()) == 0;
}
case CPDF_Object::kReference:
return obj1->AsReference()->GetRefObjNum() ==
diff --git a/core/fpdfapi/parser/cpdf_stream_acc.h b/core/fpdfapi/parser/cpdf_stream_acc.h
index 34cbf3b..c6b71f1 100644
--- a/core/fpdfapi/parser/cpdf_stream_acc.h
+++ b/core/fpdfapi/parser/cpdf_stream_acc.h
@@ -35,7 +35,6 @@
const CPDF_Stream* GetStream() const { return m_pStream.Get(); }
const CPDF_Dictionary* GetDict() const;
- const uint8_t* GetData() const;
uint32_t GetSize() const;
pdfium::span<const uint8_t> GetSpan() const;
ByteString ComputeDigest() const;
@@ -50,6 +49,7 @@
void LoadAllData(bool bRawAccess, uint32_t estimated_size, bool bImageAcc);
void ProcessRawData();
void ProcessFilteredData(uint32_t estimated_size, bool bImageAcc);
+ const uint8_t* GetData() const;
// Reads the raw data from |m_pStream|, or return nullptr on failure.
std::unique_ptr<uint8_t, FxFreeDeleter> ReadRawStream() const;
diff --git a/core/fpdfapi/parser/cpdf_stream_acc_unittest.cpp b/core/fpdfapi/parser/cpdf_stream_acc_unittest.cpp
index 26c0347..4cbe9fd 100644
--- a/core/fpdfapi/parser/cpdf_stream_acc_unittest.cpp
+++ b/core/fpdfapi/parser/cpdf_stream_acc_unittest.cpp
@@ -17,6 +17,5 @@
pdfium::MakeRetain<CPDF_Dictionary>());
auto stream_acc = pdfium::MakeRetain<CPDF_StreamAcc>(stream.Get());
stream_acc->LoadAllDataRaw();
- EXPECT_EQ(0u, stream_acc->GetSize());
- EXPECT_FALSE(stream_acc->GetData());
+ EXPECT_TRUE(stream_acc->GetSpan().empty());
}
diff --git a/core/fpdfapi/parser/fpdf_parser_utility.cpp b/core/fpdfapi/parser/fpdf_parser_utility.cpp
index 90ea075..e16a817 100644
--- a/core/fpdfapi/parser/fpdf_parser_utility.cpp
+++ b/core/fpdfapi/parser/fpdf_parser_utility.cpp
@@ -246,8 +246,8 @@
buf << p->GetDict() << "stream\r\n";
auto pAcc = pdfium::MakeRetain<CPDF_StreamAcc>(p);
pAcc->LoadAllDataRaw();
- buf.write(reinterpret_cast<const char*>(pAcc->GetData()),
- pAcc->GetSize());
+ pdfium::span<const uint8_t> span = pAcc->GetSpan();
+ buf.write(reinterpret_cast<const char*>(span.data()), span.size());
buf << "\r\nendstream";
break;
}
diff --git a/fpdfsdk/cpdfsdk_helpers.cpp b/fpdfsdk/cpdfsdk_helpers.cpp
index 05e32ee..e4f2423 100644
--- a/fpdfsdk/cpdfsdk_helpers.cpp
+++ b/fpdfsdk/cpdfsdk_helpers.cpp
@@ -67,7 +67,8 @@
if (!buffer || buflen < stream_data_size)
return stream_data_size;
- memcpy(buffer, stream_acc->GetData(), stream_data_size);
+ pdfium::span<const uint8_t> span = stream_acc->GetSpan();
+ memcpy(buffer, span.data(), span.size());
return stream_data_size;
}
diff --git a/fpdfsdk/fpdf_edit_embeddertest.cpp b/fpdfsdk/fpdf_edit_embeddertest.cpp
index d4f5d05..f1ec7c4 100644
--- a/fpdfsdk/fpdf_edit_embeddertest.cpp
+++ b/fpdfsdk/fpdf_edit_embeddertest.cpp
@@ -146,7 +146,7 @@
streamAcc->GetDict()->GetIntegerFor("Length1"));
}
- const uint8_t* stream_data = streamAcc->GetData();
+ pdfium::span<const uint8_t> stream_data = streamAcc->GetSpan();
for (size_t j = 0; j < span.size(); j++)
EXPECT_EQ(span[j], stream_data[j]) << " at byte " << j;
}
diff --git a/fpdfsdk/fpdfxfa/cpdfxfa_docenvironment.cpp b/fpdfsdk/fpdfxfa/cpdfxfa_docenvironment.cpp
index 34c549d..e09aa39 100644
--- a/fpdfsdk/fpdfxfa/cpdfxfa_docenvironment.cpp
+++ b/fpdfsdk/fpdfxfa/cpdfxfa_docenvironment.cpp
@@ -505,7 +505,8 @@
}
auto pAcc = pdfium::MakeRetain<CPDF_StreamAcc>(pStream);
pAcc->LoadAllDataFiltered();
- fileWrite->WriteBlock(pAcc->GetData(), pAcc->GetSize());
+ pdfium::span<const uint8_t> span = pAcc->GetSpan();
+ fileWrite->WriteBlock(span.data(), span.size());
}
}
fileWrite->Flush();