Make WideString's FromUTF16LE(), FromUTF16BE() take bytes, not wchar_t
This allows callers to pass-in UTF-16 data that's possibly not
2-byte aligned, and seems to be what most of the callers want too.
With this, we'll be able to use this in PDF_DecodeText.
No intended behavior change.
Change-Id: I2095c49b98646a33b21342fe4289c0436f8447b9
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/113950
Reviewed-by: Lei Zhang <thestig@chromium.org>
Commit-Queue: Nico Weber <thakis@chromium.org>
Commit-Queue: Lei Zhang <thestig@chromium.org>
Auto-Submit: Nico Weber <thakis@chromium.org>
diff --git a/fpdfsdk/cpdfsdk_formfillenvironment.cpp b/fpdfsdk/cpdfsdk_formfillenvironment.cpp
index 075e43e..a063f16 100644
--- a/fpdfsdk/cpdfsdk_formfillenvironment.cpp
+++ b/fpdfsdk/cpdfsdk_formfillenvironment.cpp
@@ -154,8 +154,8 @@
if (nActualLen <= 0 || nActualLen > nRequiredLen)
return WideString();
- return WideString::FromUTF16LE(reinterpret_cast<uint16_t*>(pBuff.data()),
- nActualLen / sizeof(uint16_t));
+ return WideString::FromUTF16LE(
+ {pBuff.data(), static_cast<size_t>(nActualLen)});
#else // PDF_ENABLE_XFA
return WideString();
#endif // PDF_ENABLE_XFA
@@ -176,8 +176,8 @@
if (nActualLen <= 0 || nActualLen > nRequiredLen)
return WideString();
- return WideString::FromUTF16LE(reinterpret_cast<uint16_t*>(pBuff.data()),
- nActualLen / sizeof(uint16_t));
+ return WideString::FromUTF16LE(
+ {pBuff.data(), static_cast<size_t>(nActualLen)});
#else // PDF_ENABLE_XFA
return WideString();
#endif // PDF_ENABLE_XFA
@@ -570,8 +570,8 @@
AsFPDFWideString(&bsHeader), &response);
WideString wsRet =
- WideString::FromUTF16LE(reinterpret_cast<FPDF_WIDESTRING>(response.str),
- response.len / sizeof(FPDF_WCHAR));
+ WideString::FromUTF16LE({reinterpret_cast<const uint8_t*>(response.str),
+ static_cast<size_t>(response.len)});
FPDF_BStr_Clear(&response);
return wsRet;