| Index: base/android/jni_string.cc
|
| diff --git a/base/android/jni_string.cc b/base/android/jni_string.cc
|
| index 57c2805ead39177d462daba5aa345bfd9026973d..121755ab75e46cfe6017cdae28f3870056498525 100644
|
| --- a/base/android/jni_string.cc
|
| +++ b/base/android/jni_string.cc
|
| @@ -29,12 +29,18 @@ void ConvertJavaStringToUTF8(JNIEnv* env, jstring str, std::string* result) {
|
| result->clear();
|
| return;
|
| }
|
| + const jsize length = env->GetStringLength(str);
|
| + if (!length) {
|
| + result->clear();
|
| + CheckException(env);
|
| + return;
|
| + }
|
| // JNI's GetStringUTFChars() returns strings in Java "modified" UTF8, so
|
| // instead get the String in UTF16 and convert using chromium's conversion
|
| // function that yields plain (non Java-modified) UTF8.
|
| const jchar* chars = env->GetStringChars(str, NULL);
|
| DCHECK(chars);
|
| - UTF16ToUTF8(chars, env->GetStringLength(str), result);
|
| + UTF16ToUTF8(chars, length, result);
|
| env->ReleaseStringChars(str, chars);
|
| CheckException(env);
|
| }
|
| @@ -69,11 +75,17 @@ void ConvertJavaStringToUTF16(JNIEnv* env, jstring str, string16* result) {
|
| result->clear();
|
| return;
|
| }
|
| + const jsize length = env->GetStringLength(str);
|
| + if (!length) {
|
| + result->clear();
|
| + CheckException(env);
|
| + return;
|
| + }
|
| const jchar* chars = env->GetStringChars(str, NULL);
|
| DCHECK(chars);
|
| // GetStringChars isn't required to NULL-terminate the strings
|
| // it returns, so the length must be explicitly checked.
|
| - result->assign(chars, env->GetStringLength(str));
|
| + result->assign(chars, length);
|
| env->ReleaseStringChars(str, chars);
|
| CheckException(env);
|
| }
|
|
|