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 {