diff --git a/stepmania/src/RageUtil.cpp b/stepmania/src/RageUtil.cpp index 36611faca1..18bb41c307 100644 --- a/stepmania/src/RageUtil.cpp +++ b/stepmania/src/RageUtil.cpp @@ -1227,14 +1227,14 @@ bool utf8_to_wchar_ec( const RString &s, unsigned &start, wchar_t &ch ) } /* Like utf8_to_wchar_ec, but only does enough error checking to prevent crashing. */ -bool utf8_to_wchar( const RString &s, unsigned &start, wchar_t &ch ) +bool utf8_to_wchar( const char *s, size_t iLength, unsigned &start, wchar_t &ch ) { - if( start >= s.size() ) + if( start >= iLength ) return false; int len = utf8_get_char_len( s[start] ); - if( start+len > s.size() ) + if( start+len > iLength ) { /* We don't have room for enough continuation bytes. Return error. */ start += len; @@ -1377,7 +1377,7 @@ wstring RStringToWstring( const RString &s ) } wchar_t ch; - if( !utf8_to_wchar( s, start, ch ) ) + if( !utf8_to_wchar( s.data(), s.size(), start, ch ) ) ch = INVALID_CHAR; ret += ch; } diff --git a/stepmania/src/RageUtil.h b/stepmania/src/RageUtil.h index 142351d5d9..b06e2222fc 100644 --- a/stepmania/src/RageUtil.h +++ b/stepmania/src/RageUtil.h @@ -280,7 +280,7 @@ typedef int longchar; extern const wchar_t INVALID_CHAR; int utf8_get_char_len( char p ); -bool utf8_to_wchar( const RString &s, unsigned &start, wchar_t &ch ); +bool utf8_to_wchar( const char *s, size_t iLength, unsigned &start, wchar_t &ch ); bool utf8_to_wchar_ec( const RString &s, unsigned &start, wchar_t &ch ); void wchar_to_utf8( wchar_t ch, RString &out ); wchar_t utf8_get_char( const RString &s );