Implement WideString::ReverseFind()
Unlike its ByteString counterpart, WideString lacks a reverse find.
Add implementation and tests for ReverseFind(), inspired by those for
ByteString::ReverseFind().
Bug: pdfium:1405
Change-Id: I40bb5d21c3781df492ae038c14b295644621768f
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/61592
Commit-Queue: Lei Zhang <thestig@chromium.org>
Reviewed-by: Lei Zhang <thestig@chromium.org>
diff --git a/core/fxcrt/widestring.cpp b/core/fxcrt/widestring.cpp
index 2340b14..673d999 100644
--- a/core/fxcrt/widestring.cpp
+++ b/core/fxcrt/widestring.cpp
@@ -779,6 +779,18 @@
: Optional<size_t>();
}
+Optional<size_t> WideString::ReverseFind(wchar_t ch) const {
+ if (!m_pData)
+ return pdfium::nullopt;
+
+ size_t nLength = m_pData->m_nDataLength;
+ while (nLength--) {
+ if (m_pData->m_String[nLength] == ch)
+ return nLength;
+ }
+ return pdfium::nullopt;
+}
+
void WideString::MakeLower() {
if (!m_pData)
return;