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 0x00002aaaab4f5c01 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.c 25 Nov 2005 15:33:23 -0000 1.18 +++ native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkClipboard.c 26 Nov 2005 13:15:38 -0000 @@ -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.c 25 Nov 2005 20:21:30 -0000 1.3 +++ native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkSelection.c 26 Nov 2005 13:15:38 -0000 @@ -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