On Fri, 2005-11-25 at 21:17 +0100, Mark Wielaard wrote:
2005-11-25 Mark Wielaard [EMAIL PROTECTED]
Fixes bug #24981
* native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkSelection.c
(clipboard_targets_received): DeleteLocalRef of NewStringUTF.
(clipboard_text_received): Likewise.
(clipboard_uris_received): Likewise.
Nice, but you missed some local refs. And the bug's not fixed :-)
These are some more i've found, but there is still something left. The
line where it's out of local refs is:
#2 0x2b4f5c01 in clipboard_targets_received (clipboard=Variable
clipboard is not available.
) at gnu_java_awt_peer_gtk_GtkSelection.c:106
But i don't know where it actually leaks the refs. Maybe someone else?
TWISTI
2005-11-26 Christian Thalinger [EMAIL PROTECTED]
* native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkClipboard.c
(clipboard_get_func): Added missing DeleteLocalRef calls.
* native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkSelection.c
(clipboard_targets_received): Likewise.
(clipboard_uris_received): Likewise.
Index: native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkClipboard.c
===
RCS file:
/cvsroot/classpath/classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkClipboard.c,v
retrieving revision 1.18
diff -u -3 -p -r1.18 gnu_java_awt_peer_gtk_GtkClipboard.c
--- native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkClipboard.c25 Nov 2005
15:33:23 - 1.18
+++ native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkClipboard.c26 Nov 2005
13:15:38 -
@@ -152,6 +152,7 @@ clipboard_get_func (GtkClipboard *clipbo
gtk_clipboard_instance,
provideContentID,
target_string);
+ (*env)-DeleteLocalRef(env, target_string);
if (bytes == NULL)
return;
len = (*env)-GetArrayLength(env, bytes);
@@ -238,10 +239,13 @@ clipboard_get_func (GtkClipboard *clipbo
if (uri == NULL)
break;
text = (*env)-GetStringUTFChars (env, uri, NULL);
- if (text == NULL)
+ if (text == NULL) {
+ (*env)-DeleteLocalRef(env, uri);
break;
+ }
list[i] = strdup (text);
(*env)-ReleaseStringUTFChars (env, uri, text);
+ (*env)-DeleteLocalRef(env, uri);
}
if (i == count)
Index: native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkSelection.c
===
RCS file:
/cvsroot/classpath/classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkSelection.c,v
retrieving revision 1.3
diff -u -3 -p -r1.3 gnu_java_awt_peer_gtk_GtkSelection.c
--- native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkSelection.c25 Nov 2005
20:21:30 - 1.3
+++ native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkSelection.c26 Nov 2005
13:15:38 -
@@ -105,6 +105,8 @@ clipboard_targets_received (GtkClipboard
stringClass = (*env)-FindClass (env, java/lang/String);
strings = (*env)-NewObjectArray (env, strings_len, stringClass,
NULL);
+ (*env)-DeleteLocalRef(env, stringClass);
+
if (strings != NULL)
{
if (include_text)
@@ -133,6 +135,8 @@ clipboard_targets_received (GtkClipboard
(*env)-DeleteLocalRef (env, string);
}
}
+
+ (*env)-DeleteLocalRef(env, strings);
}
for (i = 0; i targets_len; i++)
@@ -321,6 +325,8 @@ clipboard_uris_received (GtkClipboard *c
len++;
strings = (*env)-NewObjectArray (env, len, stringClass, NULL);
+ (*env)-DeleteLocalRef(env, stringClass);
+
if (strings != NULL)
{
for (i = 0; i len; i++)
@@ -331,6 +337,8 @@ clipboard_uris_received (GtkClipboard *c
(*env)-SetObjectArrayElement (env, strings, i, string);
(*env)-DeleteLocalRef (env, string);
}
+
+ (*env)-DeleteLocalRef(env, strings);
}
g_strfreev (uris);
}
___
Classpath-patches mailing list
Classpath-patches@gnu.org
http://lists.gnu.org/mailman/listinfo/classpath-patches