@@ -84,33 +84,33 @@ bool Utf8_Validate(const char* str, size_t length)
8484 return true ;
8585}
8686
87- size_t Get_Utf8_Size (const wchar_t * src)
87+ size_t Get_Utf8_Size (const wchar_t * src, size_t srcLen )
8888{
89- int bytes = WideCharToMultiByte (CP_UTF8, 0 , src, - 1 , nullptr , 0 , nullptr , nullptr );
90- return (bytes > 1 ) ? (size_t )( bytes - 1 ) : 0 ;
89+ int bytes = WideCharToMultiByte (CP_UTF8, 0 , src, ( int )srcLen , nullptr , 0 , nullptr , nullptr );
90+ return (bytes > 0 ) ? (size_t )bytes : 0 ;
9191}
9292
93- size_t Get_Unicode_Size (const char * src)
93+ size_t Get_Unicode_Size (const char * src, size_t srcLen )
9494{
95- int wchars = MultiByteToWideChar (CP_UTF8, 0 , src, - 1 , nullptr , 0 );
96- return (wchars > 1 ) ? (size_t )( wchars - 1 ) : 0 ;
95+ int wchars = MultiByteToWideChar (CP_UTF8, 0 , src, ( int )srcLen , nullptr , 0 );
96+ return (wchars > 0 ) ? (size_t )wchars : 0 ;
9797}
9898
99- bool Unicode_To_Utf8 (char * dest, const wchar_t * src, size_t dest_size)
99+ bool Unicode_To_Utf8 (char * dest, const wchar_t * src, size_t srcLen, size_t dest_size)
100100{
101101 if (dest_size == 0 )
102102 return false ;
103- int result = WideCharToMultiByte (CP_UTF8, 0 , src, - 1 , dest, (int )dest_size, nullptr , nullptr );
103+ int result = WideCharToMultiByte (CP_UTF8, 0 , src, ( int )srcLen , dest, (int )dest_size, nullptr , nullptr );
104104 if (result == 0 )
105105 dest[0 ] = ' \0 ' ;
106106 return result != 0 ;
107107}
108108
109- bool Utf8_To_Unicode (wchar_t * dest, const char * src, size_t dest_size)
109+ bool Utf8_To_Unicode (wchar_t * dest, const char * src, size_t srcLen, size_t dest_size)
110110{
111111 if (dest_size == 0 )
112112 return false ;
113- int result = MultiByteToWideChar (CP_UTF8, 0 , src, - 1 , dest, (int )dest_size);
113+ int result = MultiByteToWideChar (CP_UTF8, 0 , src, ( int )srcLen , dest, (int )dest_size);
114114 if (result == 0 )
115115 dest[0 ] = L' \0 ' ;
116116 return result != 0 ;
0 commit comments