summaryrefslogtreecommitdiffstats
path: root/Source/WebCore/bridge/jni/v8/JavaFieldJobjectV8.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Source/WebCore/bridge/jni/v8/JavaFieldJobjectV8.cpp')
-rw-r--r--Source/WebCore/bridge/jni/v8/JavaFieldJobjectV8.cpp13
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);
}