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);
}