diff options
Diffstat (limited to 'Source/WebCore/bridge/jni/v8/JavaFieldJobjectV8.cpp')
-rw-r--r-- | Source/WebCore/bridge/jni/v8/JavaFieldJobjectV8.cpp | 13 |
1 files changed, 11 insertions, 2 deletions
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); } |