diff --git a/src/utility/wide_string.cpp b/src/utility/wide_string.cpp index 33702562..4453ec5b 100644 --- a/src/utility/wide_string.cpp +++ b/src/utility/wide_string.cpp @@ -34,9 +34,16 @@ std::wstring ToWString(std::string s) size_t wideLength(const std::wstring &ws) { - int len = wcswidth(ws.c_str(), -1); - assert(len >= 0); - return len; + size_t result = 0; + for (const auto &wc : ws) + { + int len = wcwidth(wc); + if (len < 0) + ++result; + else + result += len; + } + return result; } void wideCut(std::wstring &ws, size_t max_length)