diff options
Diffstat (limited to 'Source/WebCore/bridge/jni/v8')
-rw-r--r-- | Source/WebCore/bridge/jni/v8/JNIUtilityPrivate.cpp | 15 | ||||
-rw-r--r-- | Source/WebCore/bridge/jni/v8/JavaFieldJobjectV8.cpp | 13 |
2 files changed, 19 insertions, 9 deletions
diff --git a/Source/WebCore/bridge/jni/v8/JNIUtilityPrivate.cpp b/Source/WebCore/bridge/jni/v8/JNIUtilityPrivate.cpp index 47b88d6..42efaac 100644 --- a/Source/WebCore/bridge/jni/v8/JNIUtilityPrivate.cpp +++ b/Source/WebCore/bridge/jni/v8/JNIUtilityPrivate.cpp @@ -107,7 +107,7 @@ JavaValue convertNPVariantToJavaValue(NPVariant value, const String& javaClass) } env->SetByteArrayRegion(static_cast<jbyteArray>(javaArray), i, 1, &bVal); } - } else if (!strcmp(javaClassName.data(), "[C")) { + } else if (!strcmp(javaClassName.data(), "[C")) { // array of chars javaArray = env->NewCharArray(length); // Now iterate over each element and add to the array. @@ -123,7 +123,7 @@ JavaValue convertNPVariantToJavaValue(NPVariant value, const String& javaClass) } env->SetCharArrayRegion(static_cast<jcharArray>(javaArray), i, 1, &cVal); } - } else if (!strcmp(javaClassName.data(), "[D")) { + } else if (!strcmp(javaClassName.data(), "[D")) { // array of doubles javaArray = env->NewDoubleArray(length); // Now iterate over each element and add to the array. @@ -135,7 +135,7 @@ JavaValue convertNPVariantToJavaValue(NPVariant value, const String& javaClass) env->SetDoubleArrayRegion(static_cast<jdoubleArray>(javaArray), i, 1, &dVal); } } - } else if (!strcmp(javaClassName.data(), "[F")) { + } else if (!strcmp(javaClassName.data(), "[F")) { // array of floats javaArray = env->NewFloatArray(length); // Now iterate over each element and add to the array. @@ -147,7 +147,7 @@ JavaValue convertNPVariantToJavaValue(NPVariant value, const String& javaClass) env->SetFloatArrayRegion(static_cast<jfloatArray>(javaArray), i, 1, &fVal); } } - } else if (!strcmp(javaClassName.data(), "[I")) { + } else if (!strcmp(javaClassName.data(), "[I")) { // array of ints javaArray = env->NewIntArray(length); // Now iterate over each element and add to the array. @@ -162,7 +162,7 @@ JavaValue convertNPVariantToJavaValue(NPVariant value, const String& javaClass) } env->SetIntArrayRegion(static_cast<jintArray>(javaArray), i, 1, &iVal); } - } else if (!strcmp(javaClassName.data(), "[J")) { + } else if (!strcmp(javaClassName.data(), "[J")) { // array of longs javaArray = env->NewLongArray(length); // Now iterate over each element and add to the array. @@ -177,7 +177,7 @@ JavaValue convertNPVariantToJavaValue(NPVariant value, const String& javaClass) } env->SetLongArrayRegion(static_cast<jlongArray>(javaArray), i, 1, &jVal); } - } else if (!strcmp(javaClassName.data(), "[S")) { + } else if (!strcmp(javaClassName.data(), "[S")) { // array of shorts javaArray = env->NewShortArray(length); // Now iterate over each element and add to the array. @@ -192,7 +192,7 @@ JavaValue convertNPVariantToJavaValue(NPVariant value, const String& javaClass) } env->SetShortArrayRegion(static_cast<jshortArray>(javaArray), i, 1, &sVal); } - } else if (!strcmp(javaClassName.data(), "[Z")) { + } else if (!strcmp(javaClassName.data(), "[Z")) { // array of booleans javaArray = env->NewBooleanArray(length); // Now iterate over each element and add to the array. @@ -210,6 +210,7 @@ JavaValue convertNPVariantToJavaValue(NPVariant value, const String& javaClass) } result.m_objectValue = adoptRef(new JavaInstanceJobject(javaArray)); + env->DeleteLocalRef(javaArray); } break; #endif // PLATFORM(ANDROID) diff --git a/Source/WebCore/bridge/jni/v8/JavaFieldJobjectV8.cpp b/Source/WebCore/bridge/jni/v8/JavaFieldJobjectV8.cpp index 0fe5837..fb23cf5 100644 --- a/Source/WebCore/bridge/jni/v8/JavaFieldJobjectV8.cpp +++ b/Source/WebCore/bridge/jni/v8/JavaFieldJobjectV8.cpp @@ -33,14 +33,23 @@ using namespace JSC::Bindings; JavaFieldJobject::JavaFieldJobject(JNIEnv* env, jobject aField) { // Get field type - jobject fieldType = callJNIMethod<jobject>(aField, "getType", "()Ljava/lang/Class;"); - jstring fieldTypeName = static_cast<jstring>(callJNIMethod<jobject>(fieldType, "getName", "()Ljava/lang/String;")); + jstring fieldTypeName = 0; + jclass fieldType = static_cast<jclass>(callJNIMethod<jobject>(aField, "getType", "()Ljava/lang/Class;")); + if (fieldType) + fieldTypeName = static_cast<jstring>(callJNIMethod<jobject>(fieldType, "getName", "()Ljava/lang/String;")); + if (!fieldTypeName) + fieldTypeName = env->NewStringUTF("<Unknown>"); m_typeClassName = JavaString(env, fieldTypeName); m_type = javaTypeFromClassName(m_typeClassName.utf8()); + env->DeleteLocalRef(fieldType); + env->DeleteLocalRef(fieldTypeName); // Get field name jstring fieldName = static_cast<jstring>(callJNIMethod<jobject>(aField, "getName", "()Ljava/lang/String;")); + if (!fieldName) + fieldName = env->NewStringUTF("<Unknown>"); m_name = JavaString(env, fieldName); + env->DeleteLocalRef(fieldName); m_field = new JobjectWrapper(aField); } |