Re: [gtk-list] ...yaq... (yet another question) :-)




Georg Greve <greve@fusebox.hanse.de> writes:

> -----BEGIN PGP SIGNED MESSAGE-----
> 
> Hi !
> 
> I am also having another problem. I tagged a special data array to my
> list items and of course the memory should be freed again upon
> destruction of the list items.
> 
> So I attached my function to free the memory to the items by
> 
> gtk_signal_connect (GTK_OBJECT (list_item), "destroy",
> 			  GTK_SIGNAL_FUNC (destroy_filter_entry), filter);
> 
> Where "filter" is the pointer to the data to be freed. The interesting
> question is whether I need to destroy the list item itself
> somehow. And if I have to: how do I do it ? It seems that right now
> just having:
> 
> void destroy_filter_entry(GtkWidget *widget, gpointer *data){
>   Filter* filter = (Filter*) data;
>   delete filter;
> }
> 
> crashes my program...

Hmmm, I guess this is a C++ program. I assume you are not mixing
malloc() or g_new/g_malloc with delete. Other than that, it looks
fine.

I suspect there is some other problem with your program - if you
comment out the 'delete filter' and it works, then my guess is that
you are freeing the filter multiple times in some fashion.

[ note, that that should be 'gpointer data', not 'gpointer *data' -
  you may have copied it from an old version of the tutorial
  which had it wrong in some places. It shouldn't do any harm
  here though... ]

> By the way: Is the destruction event called for every GtkListItem upon
> destruction of the GtkList ? One would think so, but by now I am
> desperate enough to consider the weirdest things (voodoo ? :-) ).

Yes, it will be.

Regards,
                                        Owen



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]