Use FixedSizeDataVector instead of DataVector in cpdf_creator.cpp
Switch to FixedSizeDataVector since the vector size never changes and
the vector does not need to initialized.
Change-Id: I4db5d2c19466a0a2154ee4220e017153c186da9e
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/119328
Commit-Queue: Lei Zhang <thestig@chromium.org>
Reviewed-by: Tom Sepez <tsepez@chromium.org>
Reviewed-by: Thomas Sepez <tsepez@google.com>
diff --git a/core/fpdfapi/edit/cpdf_creator.cpp b/core/fpdfapi/edit/cpdf_creator.cpp
index a3f1072..000df08 100644
--- a/core/fpdfapi/edit/cpdf_creator.cpp
+++ b/core/fpdfapi/edit/cpdf_creator.cpp
@@ -26,7 +26,7 @@
#include "core/fpdfapi/parser/object_tree_traversal_util.h"
#include "core/fxcrt/check.h"
#include "core/fxcrt/containers/contains.h"
-#include "core/fxcrt/data_vector.h"
+#include "core/fxcrt/fixed_size_data_vector.h"
#include "core/fxcrt/fx_extension.h"
#include "core/fxcrt/fx_random.h"
#include "core/fxcrt/fx_safe_types.h"
@@ -50,15 +50,15 @@
bool Flush();
FX_FILESIZE offset_ = 0;
- DataVector<uint8_t> buffer_;
+ FixedSizeDataVector<uint8_t> buffer_;
pdfium::raw_span<uint8_t> available_;
RetainPtr<IFX_RetainableWriteStream> const backing_file_;
};
CFX_FileBufferArchive::CFX_FileBufferArchive(
RetainPtr<IFX_RetainableWriteStream> file)
- : buffer_(kArchiveBufferSize),
- available_(buffer_),
+ : buffer_(FixedSizeDataVector<uint8_t>::Uninit(kArchiveBufferSize)),
+ available_(buffer_.span()),
backing_file_(std::move(file)) {
DCHECK(backing_file_);
}
@@ -68,11 +68,9 @@
}
bool CFX_FileBufferArchive::Flush() {
- size_t nUsed = buffer_.size() - available_.size();
- available_ = pdfium::make_span(buffer_);
- if (!nUsed)
- return true;
- return backing_file_->WriteBlock(available_.first(nUsed));
+ size_t used = buffer_.size() - available_.size();
+ available_ = buffer_.span();
+ return used == 0 || backing_file_->WriteBlock(available_.first(used));
}
bool CFX_FileBufferArchive::WriteBlock(pdfium::span<const uint8_t> buffer) {