diff --git a/src/xrCore/Text/StringConversion.cpp b/src/xrCore/Text/StringConversion.cpp index 3982dbb41e1..bcbd0db2142 100644 --- a/src/xrCore/Text/StringConversion.cpp +++ b/src/xrCore/Text/StringConversion.cpp @@ -131,7 +131,7 @@ u16 mbhMulti2Wide(wchar_t* WideStr, wchar_t* WidePos, u16 WideStrSize, const cha return dpos; } -xr_string StringFromUTF8(const char* in, const std::locale& locale /*= std::locale("")*/) +xr_string StringFromUTF8(const char* in, const std::locale& locale) { using wcvt = std::wstring_convert, wchar_t>; auto wstr = wcvt{}.from_bytes(in); @@ -140,7 +140,7 @@ xr_string StringFromUTF8(const char* in, const std::locale& locale /*= std::loca return result; } -xr_string StringToUTF8(const char* in, const std::locale& locale /*= std::locale("")*/) +xr_string StringToUTF8(const char* in, const std::locale& locale) { using wcvt = std::wstring_convert, wchar_t>; std::wstring wstr(xr_strlen(in), L'\0'); diff --git a/src/xrCore/Text/StringConversion.hpp b/src/xrCore/Text/StringConversion.hpp index 582a912aa70..37ccfebadcc 100644 --- a/src/xrCore/Text/StringConversion.hpp +++ b/src/xrCore/Text/StringConversion.hpp @@ -30,5 +30,5 @@ IC bool IsAlphaCharacter(wchar_t wc) ((wc >= 0xFF21) && (wc <= 0xFF3A)) || ((wc >= 0xFF41) && (wc <= 0xFF5A))); } -XRCORE_API xr_string StringFromUTF8(const char* string, const std::locale& locale = std::locale("")); -XRCORE_API xr_string StringToUTF8(const char* string, const std::locale& locale = std::locale("")); +XRCORE_API xr_string StringFromUTF8(const char* string, const std::locale& locale); +XRCORE_API xr_string StringToUTF8(const char* string, const std::locale& locale); diff --git a/src/xrEngine/edit_actions.cpp b/src/xrEngine/edit_actions.cpp index 589d3881177..8f58d1402e7 100644 --- a/src/xrEngine/edit_actions.cpp +++ b/src/xrEngine/edit_actions.cpp @@ -70,7 +70,7 @@ void type_pair::on_key_press(line_edit_control* const control) { case SDL_TEXTINPUT: { - const std::locale locale(""); + static std::locale locale(""); auto str = StringFromUTF8(event.text.text, locale); if (std::isalpha(str[0], locale) || str[0] == char(-1)) // "я" = -1 diff --git a/src/xrEngine/xr_input.cpp b/src/xrEngine/xr_input.cpp index 1bcc0074fbc..b7d202d94c9 100644 --- a/src/xrEngine/xr_input.cpp +++ b/src/xrEngine/xr_input.cpp @@ -195,9 +195,10 @@ pcstr KeyToMouseButtonName(const int dik) bool CInput::get_dik_name(int dik, LPSTR dest_str, int dest_sz) { xr_string keyname; + static std::locale locale(""); if (dik < SDL_NUM_SCANCODES) - keyname = StringFromUTF8(SDL_GetKeyName(SDL_GetKeyFromScancode((SDL_Scancode)dik))); + keyname = StringFromUTF8(SDL_GetKeyName(SDL_GetKeyFromScancode((SDL_Scancode)dik)), locale); else keyname = KeyToMouseButtonName(dik);