[cp-patches] Re: FYI: GtkSelection.c LocalRef cleanup

2005-11-29 Thread Mark Wielaard
On Tue, 2005-11-29 at 14:10 +0100, Mark Wielaard wrote:
 On Sat, 2005-11-26 at 14:19 +0100, Christian Thalinger wrote:
  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?
 
 I added a note to the bug. Will look into this.

OK I looked, but couldn't find anything obvious.
Would it be possible to print out a stacktrace and a list of the current
Local Refs allocated at that point?

Thanks,

Mark



___
Classpath-patches mailing list
Classpath-patches@gnu.org
http://lists.gnu.org/mailman/listinfo/classpath-patches


[cp-patches] Re: FYI: GtkSelection.c LocalRef cleanup

2005-11-26 Thread Christian Thalinger
On Fri, 2005-11-25 at 21:17 +0100, Mark Wielaard wrote:
 Christian, together with the patch that I committed today for this file
 this should now compile warning free and actually work, even on 64bit
 machines. Could you check?

Yes, builds.

TWISTI



___
Classpath-patches mailing list
Classpath-patches@gnu.org
http://lists.gnu.org/mailman/listinfo/classpath-patches


[cp-patches] Re: FYI: GtkSelection.c LocalRef cleanup

2005-11-26 Thread Christian Thalinger
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