diff options
author | Oliver Chang <ochang@chromium.org> | 2015-12-08 16:12:25 -0800 |
---|---|---|
committer | Oliver Chang <ochang@chromium.org> | 2015-12-08 16:12:25 -0800 |
commit | 8e7ed1a7759eb067063e3a52cf9efa80b8fc629b (patch) | |
tree | 3d066dbde09abec7b982258a2a3d42279811487e /core/src/fxcrt | |
parent | b3ea5b41a3f472fe2b3ecf68129382b51ede6c3a (diff) | |
download | pdfium-8e7ed1a7759eb067063e3a52cf9efa80b8fc629b.tar.xz |
Revert "Merge to master: Take Jun's UTF16LE patches."chromium/2587chromium/2586
Broke chrome bindings.
This reverts commit c3e4ae5fe5067723b58a2029a95c6411c92bed15.
R=thestig@chromium.org, tsepez@chromium.org
BUG=567485
Review URL: https://codereview.chromium.org/1511773002 .
Diffstat (limited to 'core/src/fxcrt')
-rw-r--r-- | core/src/fxcrt/fx_basic_wstring.cpp | 14 | ||||
-rw-r--r-- | core/src/fxcrt/fx_basic_wstring_unittest.cpp | 12 |
2 files changed, 14 insertions, 12 deletions
diff --git a/core/src/fxcrt/fx_basic_wstring.cpp b/core/src/fxcrt/fx_basic_wstring.cpp index 7ea7e8e112..220ffbd57d 100644 --- a/core/src/fxcrt/fx_basic_wstring.cpp +++ b/core/src/fxcrt/fx_basic_wstring.cpp @@ -287,17 +287,19 @@ CFX_ByteString CFX_WideString::UTF8Encode() const { return FX_UTF8Encode(*this); } CFX_ByteString CFX_WideString::UTF16LE_Encode() const { - CFX_ByteString result; - if (!m_pData) { - return result; + if (m_pData == NULL) { + return CFX_ByteString(FX_BSTRC("\0\0")); } int len = m_pData->m_nDataLength; - FX_CHAR* buffer = result.GetBuffer(len * 2); - for (int i = 0; i < len; ++i) { + CFX_ByteString result; + FX_CHAR* buffer = result.GetBuffer(len * 2 + 2); + for (int i = 0; i < len; i++) { buffer[i * 2] = m_pData->m_String[i] & 0xff; buffer[i * 2 + 1] = m_pData->m_String[i] >> 8; } - result.ReleaseBuffer(len * 2); + buffer[len * 2] = 0; + buffer[len * 2 + 1] = 0; + result.ReleaseBuffer(len * 2 + 2); return result; } void CFX_WideString::ConvertFrom(const CFX_ByteString& str, diff --git a/core/src/fxcrt/fx_basic_wstring_unittest.cpp b/core/src/fxcrt/fx_basic_wstring_unittest.cpp index 22f42d7985..74410ddda3 100644 --- a/core/src/fxcrt/fx_basic_wstring_unittest.cpp +++ b/core/src/fxcrt/fx_basic_wstring_unittest.cpp @@ -283,12 +283,12 @@ TEST(fxcrt, WideStringUTF16LE_Encode) { CFX_WideString ws; CFX_ByteString bs; } utf16le_encode_cases[] = { - {L"", ByteStringLiteral("")}, - {L"abc", ByteStringLiteral("a\0b\0c\0")}, - {L"abcdef", ByteStringLiteral("a\0b\0c\0d\0e\0f\0")}, - {L"abc\0def", ByteStringLiteral("a\0b\0c\0")}, - {L"\xaabb\xccdd", ByteStringLiteral("\xbb\xaa\xdd\xcc")}, - {L"\x3132\x6162", ByteStringLiteral("\x32\x31\x62\x61")}, + {L"", ByteStringLiteral("\0\0")}, + {L"abc", ByteStringLiteral("a\0b\0c\0\0\0")}, + {L"abcdef", ByteStringLiteral("a\0b\0c\0d\0e\0f\0\0\0")}, + {L"abc\0def", ByteStringLiteral("a\0b\0c\0\0\0")}, + {L"\xaabb\xccdd", ByteStringLiteral("\xbb\xaa\xdd\xcc\0\0")}, + {L"\x3132\x6162", ByteStringLiteral("\x32\x31\x62\x61\0\0")}, }; for (size_t i = 0; i < FX_ArraySize(utf16le_encode_cases); ++i) { |