aboutsummaryrefslogtreecommitdiff
path: root/windows/runner/utils.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'windows/runner/utils.cpp')
-rw-r--r--windows/runner/utils.cpp9
1 files changed, 5 insertions, 4 deletions
diff --git a/windows/runner/utils.cpp b/windows/runner/utils.cpp
index f5bf9fa..b2b0873 100644
--- a/windows/runner/utils.cpp
+++ b/windows/runner/utils.cpp
@@ -47,16 +47,17 @@ std::string Utf8FromUtf16(const wchar_t* utf16_string) {
}
int target_length = ::WideCharToMultiByte(
CP_UTF8, WC_ERR_INVALID_CHARS, utf16_string,
- -1, nullptr, 0, nullptr, nullptr);
+ -1, nullptr, 0, nullptr, nullptr)
+ -1; // remove the trailing null character
+ int input_length = (int)wcslen(utf16_string);
std::string utf8_string;
- if (target_length == 0 || target_length > utf8_string.max_size()) {
+ if (target_length <= 0 || target_length > utf8_string.max_size()) {
return utf8_string;
}
utf8_string.resize(target_length);
int converted_length = ::WideCharToMultiByte(
CP_UTF8, WC_ERR_INVALID_CHARS, utf16_string,
- -1, utf8_string.data(),
- target_length, nullptr, nullptr);
+ input_length, utf8_string.data(), target_length, nullptr, nullptr);
if (converted_length == 0) {
return std::string();
}