Chromium Code Reviews| Index: base/android/jni_string.cc |
| diff --git a/base/android/jni_string.cc b/base/android/jni_string.cc |
| index 57c2805ead39177d462daba5aa345bfd9026973d..48d233e38c140de3670b06e252b986054d8554a5 100644 |
| --- a/base/android/jni_string.cc |
| +++ b/base/android/jni_string.cc |
| @@ -29,12 +29,17 @@ void ConvertJavaStringToUTF8(JNIEnv* env, jstring str, std::string* result) { |
| result->clear(); |
| return; |
| } |
| + const jsize length = env->GetStringLength(str); |
| + if (!length) { |
| + result->clear(); |
| + return; |
|
nyquist
2015/08/04 18:05:29
Do we need CheckException(env) here, since we're u
jdduke (slow)
2015/08/04 18:10:44
Ohh good catch, done.
|
| + } |
| // 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 +74,16 @@ void ConvertJavaStringToUTF16(JNIEnv* env, jstring str, string16* result) { |
| result->clear(); |
| return; |
| } |
| + const jsize length = env->GetStringLength(str); |
| + if (!length) { |
| + result->clear(); |
| + 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); |
| } |