android: Fix conversion of actual Unicode strings (i.e. bytes!=chars)

This commit is contained in:
Tobias Brunner
2012-09-17 10:30:39 +02:00
parent 6d30954ae8
commit b7c54cf226
@@ -91,14 +91,15 @@ static inline bool androidjni_exception_occurred(JNIEnv *env)
static inline char *androidjni_convert_jstring(JNIEnv *env, jstring jstr) static inline char *androidjni_convert_jstring(JNIEnv *env, jstring jstr)
{ {
char *str = NULL; char *str = NULL;
jsize len; jsize bytes, chars;
if (jstr) if (jstr)
{ {
len = (*env)->GetStringUTFLength(env, jstr); chars = (*env)->GetStringLength(env, jstr);
str = malloc(len + 1); bytes = (*env)->GetStringUTFLength(env, jstr);
(*env)->GetStringUTFRegion(env, jstr, 0, len, str); str = malloc(bytes + 1);
str[len] = '\0'; (*env)->GetStringUTFRegion(env, jstr, 0, chars, str);
str[bytes] = '\0';
} }
return str; return str;
} }