diff options
Diffstat (limited to 'core/fxcrt/widestring.cpp')
-rw-r--r-- | core/fxcrt/widestring.cpp | 59 |
1 files changed, 15 insertions, 44 deletions
diff --git a/core/fxcrt/widestring.cpp b/core/fxcrt/widestring.cpp index 7dd1c30eb0..97073f170d 100644 --- a/core/fxcrt/widestring.cpp +++ b/core/fxcrt/widestring.cpp @@ -277,43 +277,6 @@ Optional<WideString> TryVSWPrintf(size_t size, return {str}; } -#ifndef NDEBUG -bool IsValidWideCodePage(uint16_t codepage) { - switch (codepage) { - case FX_CODEPAGE_DefANSI: - case FX_CODEPAGE_ShiftJIS: - case FX_CODEPAGE_ChineseSimplified: - case FX_CODEPAGE_Hangul: - case FX_CODEPAGE_ChineseTraditional: - return true; - default: - return false; - } -} -#endif - -WideString GetWideString(uint16_t codepage, const ByteStringView& bstr) { -#ifndef NDEBUG - ASSERT(IsValidWideCodePage(codepage)); -#endif - - int src_len = bstr.GetLength(); - int dest_len = FXSYS_MultiByteToWideChar( - codepage, 0, bstr.unterminated_c_str(), src_len, nullptr, 0); - if (!dest_len) - return WideString(); - - WideString wstr; - { - // Span's lifetime must end before ReleaseBuffer() below. - pdfium::span<wchar_t> dest_buf = wstr.GetBuffer(dest_len); - FXSYS_MultiByteToWideChar(codepage, 0, bstr.unterminated_c_str(), src_len, - dest_buf.data(), dest_len); - } - wstr.ReleaseBuffer(dest_len); - return wstr; -} - } // namespace namespace fxcrt { @@ -902,14 +865,22 @@ size_t WideString::Replace(const WideStringView& pOld, } // static -WideString WideString::FromLocal(const ByteStringView& str) { - return FromCodePage(str, 0); -} +WideString WideString::FromLocal(const ByteStringView& bstr) { + int src_len = bstr.GetLength(); + int dest_len = FXSYS_MultiByteToWideChar( + FX_CODEPAGE_DefANSI, 0, bstr.unterminated_c_str(), src_len, nullptr, 0); + if (!dest_len) + return WideString(); -// static -WideString WideString::FromCodePage(const ByteStringView& str, - uint16_t codepage) { - return GetWideString(codepage, str); + WideString wstr; + { + // Span's lifetime must end before ReleaseBuffer() below. + pdfium::span<wchar_t> dest_buf = wstr.GetBuffer(dest_len); + FXSYS_MultiByteToWideChar(FX_CODEPAGE_DefANSI, 0, bstr.unterminated_c_str(), + src_len, dest_buf.data(), dest_len); + } + wstr.ReleaseBuffer(dest_len); + return wstr; } // static |