diff options
author | Oz Linden <oz@lindenlab.com> | 2016-10-18 15:38:33 -0400 |
---|---|---|
committer | Oz Linden <oz@lindenlab.com> | 2016-10-18 15:38:33 -0400 |
commit | 8e30a2f06dd1ce407fcb2399823efed883b317d2 (patch) | |
tree | e5b22fb9fd2b5e99cf195d00338da57ecdade0d4 /indra/llcommon/llstring.cpp | |
parent | 7df153e352ce50ded382df020cc3696b8c1b9325 (diff) | |
parent | 086c1342152895da28d2e0130d09432152604ca8 (diff) |
merge changes for 4.1.1-release
Diffstat (limited to 'indra/llcommon/llstring.cpp')
-rw-r--r-- | indra/llcommon/llstring.cpp | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/indra/llcommon/llstring.cpp b/indra/llcommon/llstring.cpp index f3b8999883..c45db3b185 100644 --- a/indra/llcommon/llstring.cpp +++ b/indra/llcommon/llstring.cpp @@ -576,6 +576,33 @@ std::string utf8str_truncate(const std::string& utf8str, const S32 max_len) } } +std::string utf8str_symbol_truncate(const std::string& utf8str, const S32 symbol_len) +{ + if (0 == symbol_len) + { + return std::string(); + } + if ((S32)utf8str.length() <= symbol_len) + { + return utf8str; + } + else + { + int len = 0, byteIndex = 0; + const char* aStr = utf8str.c_str(); + size_t origSize = utf8str.size(); + + for (byteIndex = 0; len < symbol_len && byteIndex < origSize; byteIndex++) + { + if ((aStr[byteIndex] & 0xc0) != 0x80) + { + len += 1; + } + } + return utf8str.substr(0, byteIndex); + } +} + std::string utf8str_substChar( const std::string& utf8str, const llwchar target_char, |