Hi all, here a patchlet which needs a review.
The first one seems obvious, the others are maybe looking for a more elegant way.
Ideas? Here it saves in a little app around 400 bytes, yes I know, not much.... Thanks, Andreas 2006-08-11 Andreas Tobler <[EMAIL PROTECTED]> * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GdkPixbufDecoder.c (query_formats): g_free 'name' after usage. g_strfreev 'ch', the gdk_pixbuf_format_get_extensions instance. g_strfreev 'ch', the gdk_pixbuf_format_get_mime_types instance.
Index: native/jni/gtk-peer/gnu_java_awt_peer_gtk_GdkPixbufDecoder.c =================================================================== RCS file: /cvsroot/classpath/classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GdkPixbufDecoder.c,v retrieving revision 1.23 diff -u -r1.23 gnu_java_awt_peer_gtk_GdkPixbufDecoder.c --- native/jni/gtk-peer/gnu_java_awt_peer_gtk_GdkPixbufDecoder.c 11 Jun 2006 22:02:14 -0000 1.23 +++ native/jni/gtk-peer/gnu_java_awt_peer_gtk_GdkPixbufDecoder.c 11 Aug 2006 21:36:26 -0000 @@ -210,7 +210,8 @@ jobject jformat; GSList *formats, *f; GdkPixbufFormat *format; - char **ch, *name; + gchar **ch, *name; + gint count; jclass formatClass; jmethodID addExtensionID; @@ -240,14 +241,16 @@ string = (*env)->NewStringUTF(env, name); g_assert(string != NULL); - jformat = (*env)->CallStaticObjectMethod + jformat = (*env)->CallStaticObjectMethod (env, clazz, registerFormatID, string, (jboolean) gdk_pixbuf_format_is_writable(format)); (*env)->DeleteLocalRef(env, string); + g_free(name); g_assert(jformat != NULL); - + ch = gdk_pixbuf_format_get_extensions(format); + count = 0; while (*ch) { string = (*env)->NewStringUTF(env, *ch); @@ -255,9 +258,12 @@ (*env)->CallVoidMethod (env, jformat, addExtensionID, string); (*env)->DeleteLocalRef(env, string); ++ch; + ++count; } - + g_strfreev(ch - count); + ch = gdk_pixbuf_format_get_mime_types(format); + count = 0; while (*ch) { string = (*env)->NewStringUTF(env, *ch); @@ -265,12 +271,13 @@ (*env)->CallVoidMethod (env, jformat, addMimeTypeID, string); (*env)->DeleteLocalRef(env, string); ++ch; + ++count; } - + g_strfreev(ch - count); (*env)->DeleteLocalRef(env, jformat); } - - g_slist_free(formats); + + g_slist_free(formats); }