Fix spurious error logs for conversions of empty strings on Windows.

This commit is contained in:
Jordan Woyak 2018-11-18 07:22:28 -06:00 committed by Pierre Bourdon
parent 0c6d677233
commit fae368d2ee
No known key found for this signature in database
GPG Key ID: 6FB80DCD84DA0F1C
1 changed files with 15 additions and 10 deletions

View File

@ -471,20 +471,25 @@ std::wstring CPToUTF16(u32 code_page, const std::string& input)
std::string UTF16ToCP(u32 code_page, const std::wstring& input) std::string UTF16ToCP(u32 code_page, const std::wstring& input)
{ {
auto const size = WideCharToMultiByte(code_page, 0, input.data(), static_cast<int>(input.size()),
nullptr, 0, nullptr, false);
std::string output; std::string output;
output.resize(size);
if (size == 0 || if (0 != input.size())
size != WideCharToMultiByte(code_page, 0, input.data(), static_cast<int>(input.size()),
&output[0], static_cast<int>(output.size()), nullptr, false))
{ {
const DWORD error_code = GetLastError(); // "If cchWideChar [input buffer size] is set to 0, the function fails." -MSDN
ERROR_LOG(COMMON, "WideCharToMultiByte Error in String '%s': %lu", input.c_str(), error_code); auto const size = WideCharToMultiByte(
output.clear(); code_page, 0, input.data(), static_cast<int>(input.size()), nullptr, 0, nullptr, false);
output.resize(size);
if (size != WideCharToMultiByte(code_page, 0, input.data(), static_cast<int>(input.size()),
&output[0], static_cast<int>(output.size()), nullptr, false))
{
const DWORD error_code = GetLastError();
ERROR_LOG(COMMON, "WideCharToMultiByte Error in String '%s': %lu", input.c_str(), error_code);
output.clear();
}
} }
return output; return output;
} }