Return vector from CPDF_Stream::ReadRawData()
Rename method to ReadAllRawData() to indicate that a size parameter
is not required as input.
Change-Id: Id150f2074f92fae3664f752b95948bc99d7f6b19
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/101071
Reviewed-by: Lei Zhang <thestig@chromium.org>
Commit-Queue: Tom Sepez <tsepez@chromium.org>
diff --git a/core/fpdfapi/parser/cpdf_stream.cpp b/core/fpdfapi/parser/cpdf_stream.cpp
index bdcb5f6..fa08ffa 100644
--- a/core/fpdfapi/parser/cpdf_stream.cpp
+++ b/core/fpdfapi/parser/cpdf_stream.cpp
@@ -137,10 +137,17 @@
static_cast<size_t>(stream->tellp())});
}
-bool CPDF_Stream::ReadRawData(pdfium::span<uint8_t> buffer) const {
+DataVector<uint8_t> CPDF_Stream::ReadAllRawData() const {
CHECK(IsFileBased());
- return absl::get<RetainPtr<IFX_SeekableReadStream>>(data_)->ReadBlockAtOffset(
- buffer, 0);
+
+ DataVector<uint8_t> result(GetRawSize());
+ DCHECK(!result.empty());
+
+ auto underlying_stream = absl::get<RetainPtr<IFX_SeekableReadStream>>(data_);
+ if (!underlying_stream->ReadBlockAtOffset(result, 0))
+ return DataVector<uint8_t>();
+
+ return result;
}
bool CPDF_Stream::HasFilter() const {
diff --git a/core/fpdfapi/parser/cpdf_stream.h b/core/fpdfapi/parser/cpdf_stream.h
index 5066880..c683cba 100644
--- a/core/fpdfapi/parser/cpdf_stream.h
+++ b/core/fpdfapi/parser/cpdf_stream.h
@@ -56,7 +56,7 @@
RetainPtr<CPDF_Dictionary> pDict);
// Can only be called when a stream is not memory-based.
- bool ReadRawData(pdfium::span<uint8_t> buffer) const;
+ DataVector<uint8_t> ReadAllRawData() const;
bool IsUninitialized() const { return data_.index() == 0; }
bool IsFileBased() const { return data_.index() == 1; }
diff --git a/core/fpdfapi/parser/cpdf_stream_acc.cpp b/core/fpdfapi/parser/cpdf_stream_acc.cpp
index 3f82237..89902ec 100644
--- a/core/fpdfapi/parser/cpdf_stream_acc.cpp
+++ b/core/fpdfapi/parser/cpdf_stream_acc.cpp
@@ -168,10 +168,5 @@
DataVector<uint8_t> CPDF_StreamAcc::ReadRawStream() const {
DCHECK(m_pStream);
DCHECK(m_pStream->IsFileBased());
-
- DataVector<uint8_t> result(m_pStream->GetRawSize());
- DCHECK(!result.empty());
- if (!m_pStream->ReadRawData(result))
- return DataVector<uint8_t>();
- return result;
+ return m_pStream->ReadAllRawData();
}