Index: base/android/jni_array.cc |
diff --git a/base/android/jni_array.cc b/base/android/jni_array.cc |
index bc922f883c2f8c296fbbfdd4a2590afc2fb11bc9..0b7ce5d1448e35e8060f94eb441926b4d223a06e 100644 |
--- a/base/android/jni_array.cc |
+++ b/base/android/jni_array.cc |
@@ -229,11 +229,27 @@ void JavaArrayOfByteArrayToStringVector( |
env, static_cast<jbyteArray>( |
env->GetObjectArrayElement(array, i))); |
jsize bytes_len = env->GetArrayLength(bytes_array.obj()); |
- jbyte* bytes = env->GetByteArrayElements(bytes_array.obj(), NULL); |
+ jbyte* bytes = env->GetByteArrayElements(bytes_array.obj(), nullptr); |
(*out)[i].assign(reinterpret_cast<const char*>(bytes), bytes_len); |
env->ReleaseByteArrayElements(bytes_array.obj(), bytes, JNI_ABORT); |
} |
} |
+void JavaArrayOfIntArrayToIntVector( |
+ JNIEnv* env, |
+ jobjectArray array, |
+ std::vector<std::vector<int>>* out) { |
+ DCHECK(out); |
+ size_t len = SafeGetArrayLength(env, array); |
+ out->resize(len); |
+ for (size_t i = 0; i < len; ++i) { |
+ ScopedJavaLocalRef<jintArray> int_array( |
+ env, static_cast<jintArray>(env->GetObjectArrayElement(array, i))); |
+ jint* ints = env->GetIntArrayElements(int_array.obj(), nullptr); |
+ JavaIntArrayToIntVector(env, int_array.obj(), &((*out)[i])); |
+ env->ReleaseIntArrayElements(int_array.obj(), ints, JNI_ABORT); |
+ } |
+} |
+ |
} // namespace android |
} // namespace base |