Make CPDF_Stream::InitStreamFromFile()'s dict parameter required.
Fix the only unit test that passes in nullptr.
Change-Id: I7c0eed16bd55ba7427be50ae23721df3325ed416
Reviewed-on: https://pdfium-review.googlesource.com/c/50953
Reviewed-by: dsinclair <dsinclair@chromium.org>
Commit-Queue: Lei Zhang <thestig@chromium.org>
diff --git a/core/fpdfapi/parser/cpdf_stream.cpp b/core/fpdfapi/parser/cpdf_stream.cpp
index 4b042d9..06b7657 100644
--- a/core/fpdfapi/parser/cpdf_stream.cpp
+++ b/core/fpdfapi/parser/cpdf_stream.cpp
@@ -78,13 +78,12 @@
void CPDF_Stream::InitStreamFromFile(
const RetainPtr<IFX_SeekableReadStream>& pFile,
std::unique_ptr<CPDF_Dictionary> pDict) {
- m_pDict = std::move(pDict);
m_bMemoryBased = false;
m_pDataBuf.reset();
m_pFile = pFile;
m_dwSize = pdfium::base::checked_cast<uint32_t>(pFile->GetSize());
- if (m_pDict)
- m_pDict->SetNewFor<CPDF_Number>("Length", static_cast<int>(m_dwSize));
+ m_pDict = std::move(pDict);
+ m_pDict->SetNewFor<CPDF_Number>("Length", static_cast<int>(m_dwSize));
}
std::unique_ptr<CPDF_Object> CPDF_Stream::Clone() const {
diff --git a/core/fpdfapi/parser/cpdf_stream_acc_unittest.cpp b/core/fpdfapi/parser/cpdf_stream_acc_unittest.cpp
index f8a46cf..f176aa5 100644
--- a/core/fpdfapi/parser/cpdf_stream_acc_unittest.cpp
+++ b/core/fpdfapi/parser/cpdf_stream_acc_unittest.cpp
@@ -31,7 +31,8 @@
TEST(CPDF_StreamAccTest, ReadRawDataFailed) {
CPDF_Stream stream;
- stream.InitStreamFromFile(pdfium::MakeRetain<InvalidStream>(), nullptr);
+ stream.InitStreamFromFile(pdfium::MakeRetain<InvalidStream>(),
+ pdfium::MakeUnique<CPDF_Dictionary>());
auto stream_acc = pdfium::MakeRetain<CPDF_StreamAcc>(&stream);
stream_acc->LoadAllDataRaw();
EXPECT_EQ(0u, stream_acc->GetSize());