Am Mittwoch, den 28.09.2005, 10:58 +0200 schrieb David Rosal:
> Colossus wrote:
> > Am I doing the same ( memory leaking ) with g_strdup_printf ?

Yes, of course. It also allocated new memory for you, but additionally
merges the ith (where ith > 1) argument of the g_strdup_printf into the
string as it encounters positional parameters ("%d", "%s", etc.). You
should really read a good C book, preferably the K&R, to grasp the
printf syntax.

> > If so what is the better way to write the following code: ?
> > 
> > response = ShowGtkMessageDialog (GTK_WINDOW 
> > (MainWindow),GTK_DIALOG_MODAL,GTK_MESSAGE_ERROR,GTK_BUTTONS_OK,
> >         g_strdup_printf ("%s",g_strerror(errno)) );
> >         return;

> gchar *msg = g_strdup_printf("%s", g_strerror(errno));
> response = ShowGtkMessageDialog(GTK_WINDOW(MainWindow), 
> GTK_DIALOG_MODAL, GTK_MESSAGE_ERROR, GTK_BUTTONS_OK, msg);
> g_free(msg);
> return;


Uhm doing g_strdup_printf ("%s", string); doesn't have any advantage
over g_strdup (string);. It is more expensive however, because it has to
parse "%s". Because g_strerror returns a const char * (meaning that you
may not/can't/don't have to free it, since your app doesn't own the
memory), you can simply call

ShowGtkMessageDialog (GTK_WINDOW (MainWindow),
                      GTK_DIALOG_MODAL, GTK_MESSAGE_ERROR,
                      GTK_BUTTONS_OK,
                      g_strerror (errno));

without leaking anything.

-- 
Christian Neumair <[EMAIL PROTECTED]>
_______________________________________________
gtk-app-devel-list mailing list
gtk-app-devel-list@gnome.org
http://mail.gnome.org/mailman/listinfo/gtk-app-devel-list

Reply via email to