Remove checks for impossible situations in CPDF_TextPageFind.
Also remove a new keyword use when constructing CPDF_TextPageFind.
Change-Id: I1e2fee4e5d5f5710ebbabf415eb164e4d1cec5c7
Reviewed-on: https://pdfium-review.googlesource.com/c/34852
Commit-Queue: Lei Zhang <thestig@chromium.org>
Reviewed-by: Tom Sepez <tsepez@chromium.org>
diff --git a/core/fpdftext/cpdf_textpagefind.cpp b/core/fpdftext/cpdf_textpagefind.cpp
index b431f5d..d5c96bc 100644
--- a/core/fpdftext/cpdf_textpagefind.cpp
+++ b/core/fpdftext/cpdf_textpagefind.cpp
@@ -36,6 +36,8 @@
CPDF_TextPageFind::CPDF_TextPageFind(const CPDF_TextPage* pTextPage)
: m_pTextPage(pTextPage) {
+ ASSERT(m_pTextPage);
+
m_strText = m_pTextPage->GetAllPageText();
int nCount = pTextPage->CountChars();
if (nCount)
@@ -77,8 +79,6 @@
bool CPDF_TextPageFind::FindFirst(const WideString& findwhat,
const Options& options,
Optional<size_t> startPos) {
- if (!m_pTextPage)
- return false;
if (m_strText.IsEmpty() || m_bMatchCase != options.bMatchCase)
m_strText = m_pTextPage->GetAllPageText();
WideString findwhatStr = findwhat;
@@ -122,8 +122,6 @@
}
bool CPDF_TextPageFind::FindNext() {
- if (!m_pTextPage)
- return false;
m_resArray.clear();
if (!m_findNextStart.has_value())
return false;
@@ -223,8 +221,6 @@
}
bool CPDF_TextPageFind::FindPrev() {
- if (!m_pTextPage)
- return false;
m_resArray.clear();
if (m_strText.IsEmpty() || !m_findPreStart.has_value()) {
m_IsFind = false;
diff --git a/fpdfsdk/fpdf_text.cpp b/fpdfsdk/fpdf_text.cpp
index 37eba57..939dd01 100644
--- a/fpdfsdk/fpdf_text.cpp
+++ b/fpdfsdk/fpdf_text.cpp
@@ -269,8 +269,6 @@
return size;
}
-// Search
-// -1 for end
FPDF_EXPORT FPDF_SCHHANDLE FPDF_CALLCONV
FPDFText_FindStart(FPDF_TEXTPAGE text_page,
FPDF_WIDESTRING findwhat,
@@ -283,12 +281,13 @@
options.bMatchCase = !!(flags & FPDF_MATCHCASE);
options.bMatchWholeWord = !!(flags & FPDF_MATCHWHOLEWORD);
options.bConsecutive = !!(flags & FPDF_CONSECUTIVE);
- CPDF_TextPageFind* textpageFind =
- new CPDF_TextPageFind(CPDFTextPageFromFPDFTextPage(text_page));
- textpageFind->FindFirst(
+ auto find = pdfium::MakeUnique<CPDF_TextPageFind>(
+ CPDFTextPageFromFPDFTextPage(text_page));
+ find->FindFirst(
WideStringFromFPDFWideString(findwhat), options,
start_index >= 0 ? Optional<size_t>(start_index) : pdfium::nullopt);
- return FPDFSchHandleFromCPDFTextPageFind(textpageFind);
+ // Caller takes ownership.
+ return FPDFSchHandleFromCPDFTextPageFind(find.release());
}
FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV FPDFText_FindNext(FPDF_SCHHANDLE handle) {