diff options
-rw-r--r-- | cpp/src/IceUtil/StringUtil.cpp | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/cpp/src/IceUtil/StringUtil.cpp b/cpp/src/IceUtil/StringUtil.cpp index 567f4143584..b83d6dc8a79 100644 --- a/cpp/src/IceUtil/StringUtil.cpp +++ b/cpp/src/IceUtil/StringUtil.cpp @@ -700,7 +700,14 @@ IceUtilInternal::toLower(const std::string& s) result.reserve(s.size()); for(unsigned int i = 0; i < s.length(); ++i) { - result += tolower(static_cast<unsigned char>(s[i])); + if(isascii(s[i])) + { + result += tolower(static_cast<unsigned char>(s[i])); + } + else + { + result += s[i]; + } } return result; } @@ -712,7 +719,14 @@ IceUtilInternal::toUpper(const std::string& s) result.reserve(s.size()); for(unsigned int i = 0; i < s.length(); ++i) { - result += toupper(static_cast<unsigned char>(s[i])); + if(isascii(s[i])) + { + result += toupper(static_cast<unsigned char>(s[i])); + } + else + { + result += s[i]; + } } return result; } |