Title: [92689] trunk/Source/WebCore
Revision
92689
Author
[email protected]
Date
2011-08-09 10:00:03 -0700 (Tue, 09 Aug 2011)

Log Message

Java Bridge leaks local references
https://bugs.webkit.org/show_bug.cgi?id=64320

Reviewed by Alexey Proskuryakov.

No new tests as this is just an optimization.

* bridge/jni/jsc/JavaFieldJSC.cpp:
(JavaField::JavaField):
* bridge/jni/jsc/JavaMethodJSC.cpp:
(JavaMethod::JavaMethod):

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (92688 => 92689)


--- trunk/Source/WebCore/ChangeLog	2011-08-09 16:09:00 UTC (rev 92688)
+++ trunk/Source/WebCore/ChangeLog	2011-08-09 17:00:03 UTC (rev 92689)
@@ -1,3 +1,17 @@
+2011-08-09  Steve Block  <[email protected]>
+
+        Java Bridge leaks local references
+        https://bugs.webkit.org/show_bug.cgi?id=64320
+
+        Reviewed by Alexey Proskuryakov.
+
+        No new tests as this is just an optimization.
+
+        * bridge/jni/jsc/JavaFieldJSC.cpp:
+        (JavaField::JavaField):
+        * bridge/jni/jsc/JavaMethodJSC.cpp:
+        (JavaMethod::JavaMethod):
+
 2011-08-09  Pavel Feldman  <[email protected]>
 
         Web Inspector: files from different domains are mixed in the file selector in Scripts panel

Modified: trunk/Source/WebCore/bridge/jni/jsc/JavaFieldJSC.cpp (92688 => 92689)


--- trunk/Source/WebCore/bridge/jni/jsc/JavaFieldJSC.cpp	2011-08-09 16:09:00 UTC (rev 92688)
+++ trunk/Source/WebCore/bridge/jni/jsc/JavaFieldJSC.cpp	2011-08-09 17:00:03 UTC (rev 92689)
@@ -44,19 +44,23 @@
 {
     // Get field type name
     jstring fieldTypeName = 0;
-    if (jobject fieldType = callJNIMethod<jobject>(aField, "getType", "()Ljava/lang/Class;"))
+    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 = JobjectWrapper::create(aField);
 }

Modified: trunk/Source/WebCore/bridge/jni/jsc/JavaMethodJSC.cpp (92688 => 92689)


--- trunk/Source/WebCore/bridge/jni/jsc/JavaMethodJSC.cpp	2011-08-09 16:09:00 UTC (rev 92688)
+++ trunk/Source/WebCore/bridge/jni/jsc/JavaMethodJSC.cpp	2011-08-09 17:00:03 UTC (rev 92689)
@@ -41,7 +41,7 @@
     // Get return type name
     jstring returnTypeName = 0;
     if (jobject returnType = callJNIMethod<jobject>(aMethod, "getReturnType", "()Ljava/lang/Class;")) {
-            returnTypeName = static_cast<jstring>(callJNIMethod<jobject>(returnType, "getName", "()Ljava/lang/String;"));
+        returnTypeName = static_cast<jstring>(callJNIMethod<jobject>(returnType, "getName", "()Ljava/lang/String;"));
         if (!returnTypeName)
             returnTypeName = env->NewStringUTF("<Unknown>");
         env->DeleteLocalRef(returnType);
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to