[Date Prev][Date Next] [Thread Prev][Thread Next]
[Thread Index]
[Date Index]
[Author Index]
Re: [gnome-love] New file selector?
- From: Jeramy Rutley <jrutley gmail com>
- To: "James M. Cape" <jcape ignore-your tv>
- Cc: gnome-love gnome org
- Subject: Re: [gnome-love] New file selector?
- Date: Sun, 21 Nov 2004 15:33:21 -0500
Thanks for that.
I now have another memory-related question.
I'm just wondering how to safely remove things out of a GSList without
having a memory leak. I didn't find the documentation explicit.
So I have a block of code that looks like this:
GSList *gslist;
fileRequ = gtk_file_chooser_dialog_new(big list of options);
gtk_file_chooser_set_select_multiple ((GtkFileChooser *)fileRequ, TRUE);
g_signal_connect(GTK_FILE_CHOOSER (fileRequ), "destroy",
(GtkSignalFunc)fileSelDialogDestroyed, &fileRequ);
gtk_dialog_run(GTK_DIALOG(fileRequ);
/* here's where my question actually begins */
gslist = gtk_file_chooser_get_filenames(GTK_FILE_CHOOSER(fileRequ));
while(gslist)
{
printf("%s\n",(char *)gslist->data);
g_free(gslist->data);
list = g_slist_remove(gslist, gslist->data);
}
g_slist_free(gslist);
gtk_widget_destroy(fileRequ);
What I want to do is remove an element off of the front of the GSList,
use it, and then free it.
In the code above, does the g_slist_remove free the list element, or
do I need to do a g_free on each individual element? According to the
gtk_file_chooser_get_filenames documentation, it says that the g_free
is required for each element. In that case, there's the g_free
followed by a g_slist_remove... does it care that it's pointing to an
already freed element?
Could somebody tell me the correct way to free each element?
Also, in the documentation, it says that gtk_clist_* is deprecated.
Does anyone know the GTK 2.4 equivalent of it?
Thanks,
Jeramy
On Wed, 17 Nov 2004 15:57:09 -0600, James M. Cape <jcape ignore-your tv> wrote:
> On Wed, 2004-11-17 at 08:38 +0000, nelson wrote:
> >
> > #if GTK_CHECK_VERSION(2,4,0)
> > gtk_entry_set_text(GTK_ENTRY(app->fileentry),gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(file_selector)));
> > #else
>
> This, unfortunately, is a memory leak, as
> gtk_file_chooser_get_filename() returns a newly allocated string, which
> you must free. Try this instead:
>
> #if GTK_CHECK_VERSION(2,4,0)
> gchar *filename =
> gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(file_selector));
> gtk_entry_set_text (GTK_ENTRY (app->fileentry),filename);
> g_free (filename);
> #else
>
> --
> Peace,
>
> Jim Cape
> http://esco.mine.nu
> http://ignore-your.tv
>
> "If even one reporter had stood up during a pre-Iraq Bush press
> conference last year and shouted, `Bullshit!' it might have made a
> difference."
> -- Matt Taibbi, New York Press
>
>
> _______________________________________________
> gnome-love mailing list
> gnome-love gnome org
> http://mail.gnome.org/mailman/listinfo/gnome-love
>
>
>
>
--
Mozilla Firefox: Use a better Web browser: http://www.mozilla.org/
Please avoid sending me Word or PowerPoint attachments.
See http://www.fsf.org/philosophy/no-word-attachments.html
[Date Prev][Date Next] [Thread Prev][Thread Next]
[Thread Index]
[Date Index]
[Author Index]