Simplify CPDF_ToUnicodeMap::Lookup().
Treat the data in |CPDF_ToUnicodeMap::m_MultiCharBuf| as a
WideStringView instead of a raw pointer. Then use WideStringView methods
to more easily extract out the relevant data.
Change-Id: Ic0edb334e39800c99a7e5ef38be04e4a88f3bb81
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/59572
Reviewed-by: Tom Sepez <tsepez@chromium.org>
Commit-Queue: Lei Zhang <thestig@chromium.org>
diff --git a/core/fpdfapi/font/cpdf_tounicodemap.cpp b/core/fpdfapi/font/cpdf_tounicodemap.cpp
index b4831fd..2c9bb55 100644
--- a/core/fpdfapi/font/cpdf_tounicodemap.cpp
+++ b/core/fpdfapi/font/cpdf_tounicodemap.cpp
@@ -56,20 +56,11 @@
if (unicode != 0xffff)
return unicode;
- const wchar_t* buf = m_MultiCharBuf.GetBuffer();
- uint32_t buf_len = m_MultiCharBuf.GetLength();
- if (!buf || buf_len == 0)
+ WideStringView buf = m_MultiCharBuf.AsStringView();
+ size_t index = value >> 16;
+ if (!buf.IsValidIndex(index))
return WideString();
-
- uint32_t index = value >> 16;
- if (index >= buf_len)
- return WideString();
-
- uint32_t len = buf[index];
- if (index + len < index || index + len >= buf_len)
- return WideString();
-
- return WideString(buf + index + 1, len);
+ return WideString(buf.Mid(index + 1, buf[index]));
}
uint32_t CPDF_ToUnicodeMap::ReverseLookup(wchar_t unicode) const {