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 {