Core/Utils: Handle UTF-8 conversion errors

Replace the output string when a UTF-8 conversion error happen with an error message instead of using an empty string, swallowing any message that the caller wanted to log.

(cherry picked from commit bdb7e6e5e8)
This commit is contained in:
jackpoz
2019-01-12 12:05:48 +01:00
committed by Shauren
parent d8b76a6e6d
commit e9e3d2d69d

View File

@@ -258,9 +258,23 @@ bool Utf8toWStr(char const* utf8str, size_t csize, wchar_t* wstr, size_t& wsize)
}
catch (std::exception const&)
{
if (wsize > 0)
// Replace the converted string with an error message if there is enough space
// Otherwise just return an empty string
wchar_t const* errorMessage = L"An error occurred converting string from UTF-8 to WStr";
size_t errorMessageLength = wcslen(errorMessage);
if (wsize >= errorMessageLength)
{
wcscpy(wstr, errorMessage);
wsize = wcslen(wstr);
}
else if (wsize > 0)
{
wstr[0] = L'\0';
wsize = 0;
wsize = 0;
}
else
wsize = 0;
return false;
}