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) {