diff options
author | Maksim <MoNTE48@mail.ua> | 2020-04-17 23:46:30 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-04-17 23:46:30 +0200 |
commit | 23c6d0c31f2e0a4a6032b0afb02fab1d5f9c517b (patch) | |
tree | adb28d4b6d40641e03d15746fc775885de1b0eca /src/util | |
parent | 4e2473ec493689c3bc7d619fe17ee31c7f20945b (diff) | |
download | minetest-23c6d0c31f2e0a4a6032b0afb02fab1d5f9c517b.tar.gz minetest-23c6d0c31f2e0a4a6032b0afb02fab1d5f9c517b.tar.bz2 minetest-23c6d0c31f2e0a4a6032b0afb02fab1d5f9c517b.zip |
Android: fix handling non-latin characters on older Android devices (#9309)
Diffstat (limited to 'src/util')
-rw-r--r-- | src/util/string.cpp | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/src/util/string.cpp b/src/util/string.cpp index e6c52585d..2ee3ec735 100644 --- a/src/util/string.cpp +++ b/src/util/string.cpp @@ -209,6 +209,9 @@ wchar_t *narrow_to_wide_c(const char *str) } std::wstring narrow_to_wide(const std::string &mbs) { +#ifdef __ANDROID__ + return utf8_to_wide(mbs); +#else size_t wcl = mbs.size(); Buffer<wchar_t> wcs(wcl + 1); size_t len = mbstowcs(*wcs, mbs.c_str(), wcl); @@ -216,11 +219,15 @@ std::wstring narrow_to_wide(const std::string &mbs) { return L"<invalid multibyte string>"; wcs[len] = 0; return *wcs; +#endif } std::string wide_to_narrow(const std::wstring &wcs) { +#ifdef __ANDROID__ + return wide_to_utf8(wcs); +#else size_t mbl = wcs.size() * 4; SharedBuffer<char> mbs(mbl+1); size_t len = wcstombs(*mbs, wcs.c_str(), mbl); @@ -229,6 +236,7 @@ std::string wide_to_narrow(const std::wstring &wcs) mbs[len] = 0; return *mbs; +#endif } |