Use span in TestLoader.
Also change |EmbedderTest::loader_| to unique_ptr.
Change-Id: Ib9d42b6eada6716809b46b1bb8585c4c5f4d6df0
Reviewed-on: https://pdfium-review.googlesource.com/c/49990
Reviewed-by: Tom Sepez <tsepez@chromium.org>
Commit-Queue: Lei Zhang <thestig@chromium.org>
diff --git a/samples/pdfium_test.cc b/samples/pdfium_test.cc
index 69f5118..c536bc8 100644
--- a/samples/pdfium_test.cc
+++ b/samples/pdfium_test.cc
@@ -696,7 +696,7 @@
size_t len,
const Options& options,
const std::string& events) {
- TestLoader loader(pBuf, len);
+ TestLoader loader({pBuf, len});
FPDF_FILEACCESS file_access = {};
file_access.m_FileLen = static_cast<unsigned long>(len);
diff --git a/testing/embedder_test.cpp b/testing/embedder_test.cpp
index cdc10aa..febd4f2 100644
--- a/testing/embedder_test.cpp
+++ b/testing/embedder_test.cpp
@@ -93,7 +93,7 @@
FPDFAvail_Destroy(avail_);
FPDF_DestroyLibrary();
- delete loader_;
+ loader_.reset();
}
#ifdef PDF_ENABLE_V8
@@ -150,12 +150,13 @@
return false;
EXPECT_TRUE(!loader_);
- loader_ = new TestLoader(file_contents_.get(), file_length_);
+ loader_ = pdfium::MakeUnique<TestLoader>(
+ pdfium::make_span(file_contents_.get(), file_length_));
memset(&file_access_, 0, sizeof(file_access_));
file_access_.m_FileLen = static_cast<unsigned long>(file_length_);
file_access_.m_GetBlock = TestLoader::GetBlock;
- file_access_.m_Param = loader_;
+ file_access_.m_Param = loader_.get();
fake_file_access_ = pdfium::MakeUnique<FakeFileAccess>(&file_access_);
return OpenDocumentHelper(password, linearize_option, javascript_option,
diff --git a/testing/embedder_test.h b/testing/embedder_test.h
index 8a0733f..ce19b88 100644
--- a/testing/embedder_test.h
+++ b/testing/embedder_test.h
@@ -225,7 +225,7 @@
std::unique_ptr<FakeFileAccess> fake_file_access_; // must outlive |avail_|.
void* external_isolate_ = nullptr;
- TestLoader* loader_ = nullptr;
+ std::unique_ptr<TestLoader> loader_;
size_t file_length_ = 0;
std::unique_ptr<char, pdfium::FreeDeleter> file_contents_;
PageNumberToHandleMap page_map_;
diff --git a/testing/fuzzers/pdfium_fuzzer_helper.cc b/testing/fuzzers/pdfium_fuzzer_helper.cc
index f128d8a..75dc7dd 100644
--- a/testing/fuzzers/pdfium_fuzzer_helper.cc
+++ b/testing/fuzzers/pdfium_fuzzer_helper.cc
@@ -138,7 +138,7 @@
form_callbacks.version = GetFormCallbackVersion();
form_callbacks.m_pJsPlatform = &platform_callbacks;
- TestLoader loader(pBuf, len);
+ TestLoader loader({pBuf, len});
FPDF_FILEACCESS file_access;
memset(&file_access, '\0', sizeof(file_access));
file_access.m_FileLen = static_cast<unsigned long>(len);
diff --git a/testing/test_loader.cpp b/testing/test_loader.cpp
index 0bc5153..33ee331 100644
--- a/testing/test_loader.cpp
+++ b/testing/test_loader.cpp
@@ -8,8 +8,7 @@
#include "third_party/base/logging.h"
-TestLoader::TestLoader(const char* pBuf, size_t len)
- : m_pBuf(pBuf), m_Len(len) {}
+TestLoader::TestLoader(pdfium::span<const char> span) : m_Span(span) {}
// static
int TestLoader::GetBlock(void* param,
@@ -17,11 +16,11 @@
unsigned char* pBuf,
unsigned long size) {
TestLoader* pLoader = static_cast<TestLoader*>(param);
- if (pos + size < pos || pos + size > pLoader->m_Len) {
+ if (pos + size < pos || pos + size > pLoader->m_Span.size()) {
NOTREACHED();
return 0;
}
- memcpy(pBuf, pLoader->m_pBuf + pos, size);
+ memcpy(pBuf, &pLoader->m_Span[pos], size);
return 1;
}
diff --git a/testing/test_loader.h b/testing/test_loader.h
index ed01f6c..17ca9e9 100644
--- a/testing/test_loader.h
+++ b/testing/test_loader.h
@@ -5,19 +5,19 @@
#ifndef TESTING_TEST_LOADER_H_
#define TESTING_TEST_LOADER_H_
-#include <stdlib.h>
+#include "third_party/base/span.h"
class TestLoader {
public:
- TestLoader(const char* pBuf, size_t len);
+ explicit TestLoader(pdfium::span<const char> span);
+
static int GetBlock(void* param,
unsigned long pos,
unsigned char* pBuf,
unsigned long size);
private:
- const char* const m_pBuf;
- const size_t m_Len;
+ const pdfium::span<const char> m_Span;
};
#endif // TESTING_TEST_LOADER_H_