diff options
author | Archie Cobbs <archie@dellroad.org> | 2005-05-06 06:10:18 +0000 |
---|---|---|
committer | Michael Koch <mkoch@gcc.gnu.org> | 2005-05-06 06:10:18 +0000 |
commit | 8108f99852f34a6b82184cff8fdb7640be46872b (patch) | |
tree | ba34c55df46431d541bf458ab729a785d41d2313 /libjava | |
parent | 9b8d7b425267df5fb5fa7f257560848c0ba0c246 (diff) | |
download | gcc-8108f99852f34a6b82184cff8fdb7640be46872b.zip gcc-8108f99852f34a6b82184cff8fdb7640be46872b.tar.gz gcc-8108f99852f34a6b82184cff8fdb7640be46872b.tar.bz2 |
gnu_java_awt_peer_gtk_GdkPixbufDecoder.c: use DeleteLocalRef() to avoid exhausting local native references.
2005-05-06 Archie Cobbs <archie@dellroad.org>
* native/jni/gtk-peer/gnu_java_awt_peer_gtk_GdkPixbufDecoder.c:
use DeleteLocalRef() to avoid exhausting local native references.
From-SVN: r99302
Diffstat (limited to 'libjava')
-rw-r--r-- | libjava/ChangeLog | 5 | ||||
-rw-r--r-- | libjava/jni/gtk-peer/gnu_java_awt_peer_gtk_GdkPixbufDecoder.c | 20 |
2 files changed, 19 insertions, 6 deletions
diff --git a/libjava/ChangeLog b/libjava/ChangeLog index d40a594..fd3ba76 100644 --- a/libjava/ChangeLog +++ b/libjava/ChangeLog @@ -1,3 +1,8 @@ +2005-05-06 Archie Cobbs <archie@dellroad.org> + + * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GdkPixbufDecoder.c: + use DeleteLocalRef() to avoid exhausting local native references. + 2005-05-06 Mark Wielaard <mark@klomp.org> * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkWindowPeer.c: diff --git a/libjava/jni/gtk-peer/gnu_java_awt_peer_gtk_GdkPixbufDecoder.c b/libjava/jni/gtk-peer/gnu_java_awt_peer_gtk_GdkPixbufDecoder.c index 0727999..535e990 100644 --- a/libjava/jni/gtk-peer/gnu_java_awt_peer_gtk_GdkPixbufDecoder.c +++ b/libjava/jni/gtk-peer/gnu_java_awt_peer_gtk_GdkPixbufDecoder.c @@ -206,6 +206,7 @@ query_formats (JNIEnv *env, jclass clazz) jclass formatClass; jmethodID addExtensionID; jmethodID addMimeTypeID; + jobject string; formatClass = (*env)->FindClass (env, "gnu/java/awt/peer/gtk/GdkPixbufDecoder$ImageFormatSpec"); @@ -227,26 +228,33 @@ query_formats (JNIEnv *env, jclass clazz) format = (GdkPixbufFormat *) f->data; name = gdk_pixbuf_format_get_name(format); + string = (*env)->NewStringUTF(env, name); + g_assert(string != NULL); + jformat = (*env)->CallStaticObjectMethod - (env, clazz, registerFormatID, - (*env)->NewStringUTF(env, name), + (env, clazz, registerFormatID, string, (jboolean) gdk_pixbuf_format_is_writable(format)); + (*env)->DeleteLocalRef(env, string); g_assert(jformat != NULL); ch = gdk_pixbuf_format_get_extensions(format); while (*ch) { - (*env)->CallVoidMethod (env, jformat, addExtensionID, - (*env)->NewStringUTF(env, *ch)); + string = (*env)->NewStringUTF(env, *ch); + g_assert(string != NULL); + (*env)->CallVoidMethod (env, jformat, addExtensionID, string); + (*env)->DeleteLocalRef(env, string); ++ch; } ch = gdk_pixbuf_format_get_mime_types(format); while (*ch) { - (*env)->CallVoidMethod (env, jformat, addMimeTypeID, - (*env)->NewStringUTF(env, *ch)); + string = (*env)->NewStringUTF(env, *ch); + g_assert(string != NULL); + (*env)->CallVoidMethod (env, jformat, addMimeTypeID, string); + (*env)->DeleteLocalRef(env, string); ++ch; } } |