diff --git a/toonz/sources/common/tcore/tstring.cpp b/toonz/sources/common/tcore/tstring.cpp index b8754c2..a993f8d 100644 --- a/toonz/sources/common/tcore/tstring.cpp +++ b/toonz/sources/common/tcore/tstring.cpp @@ -125,9 +125,12 @@ bool isDouble(std::wstring s) { return isDouble(::to_string(s)); } std::string toUpper(std::string a) { #ifdef _WIN32 - return _strupr(const_cast(a.c_str())); + size_t size = a.size(); + const char* cstr = a.c_str(); + std::vector buf(cstr, cstr + size + 1); + return _strupr(&buf[0]); #else - std::string ret = a; + std::string ret(a); for (int i = 0; i < (int)ret.length(); i++) ret[i] = toupper(ret[i]); return ret; #endif @@ -135,9 +138,12 @@ std::string toUpper(std::string a) { std::string toLower(std::string a) { #ifdef _WIN32 - return _strlwr(const_cast(a.c_str())); + size_t size = a.size(); + const char* cstr = a.c_str(); + std::vector buf(cstr, cstr + size + 1); + return _strlwr(&buf[0]); #else - std::string ret = a; + std::string ret(a); for (int i = 0; i < (int)ret.length(); i++) ret[i] = tolower(ret[i]); return ret; #endif @@ -145,27 +151,26 @@ std::string toLower(std::string a) { std::wstring toUpper(std::wstring a) { #ifdef _WIN32 - return _wcsupr(const_cast(a.c_str())); + size_t size = a.size(); + const wchar_t* cstr = a.c_str(); + std::vector buf(cstr, cstr + size + 1); + return _wcsupr(&buf[0]); #else - std::wstring ret; - for (int i = 0; i < (int)a.length(); i++) { - wchar_t c = towupper(a[i]); - ret += c; - } + std::wstring ret(a); + for (int i = 0; i < (int)ret.length(); i++) ret[i] = towupper(ret[i]); return ret; #endif } std::wstring toLower(std::wstring a) { #ifdef _WIN32 - return _wcslwr(const_cast(a.c_str())); + size_t size = a.size(); + const wchar_t* cstr = a.c_str(); + std::vector buf(cstr, cstr + size + 1); + return _wcslwr(&buf[0]); #else - const int length = (int)a.length(); - std::wstring ret; - ret.resize(length); - for (int i = 0; i < length; i++) { - ret[i] = towlower(a[i]); - } + std::wstring ret(a); + for (int i = 0; i < (int)ret.length(); i++) ret[i] = towlower(ret[i]); return ret; #endif }