Permalink
Browse files

Merge pull request #7578 from jordan-woyak/master

Fix spurious error logs for conversions of empty strings on Windows.
  • Loading branch information...
delroth committed Nov 22, 2018
2 parents 0c6d677 + fae368d commit 2bb61afe6ea94d31d763aa2c210e53b079ce7490
Showing with 15 additions and 10 deletions.
  1. +15 −10 Source/Core/Common/StringUtil.cpp
@@ -471,20 +471,25 @@ std::wstring CPToUTF16(u32 code_page, const std::string& 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;
output.resize(size);

if (size == 0 ||
size != WideCharToMultiByte(code_page, 0, input.data(), static_cast<int>(input.size()),
&output[0], static_cast<int>(output.size()), nullptr, false))
if (0 != input.size())
{
const DWORD error_code = GetLastError();
ERROR_LOG(COMMON, "WideCharToMultiByte Error in String '%s': %lu", input.c_str(), error_code);
output.clear();
// "If cchWideChar [input buffer size] is set to 0, the function fails." -MSDN
auto const size = WideCharToMultiByte(
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;
}

0 comments on commit 2bb61af

Please sign in to comment.