Re: g_slist_foreach and g_list_foreach functions
- From: Owen Taylor <otaylor redhat com>
- To: gtk-devel-list gnome org
- Subject: Re: g_slist_foreach and g_list_foreach functions
- Date: 24 Sep 2000 11:43:18 -0400
Darin Adler <darin eazel com> writes:
> on 9/20/00 9:56 PM, Tim Janik at timj gtk org wrote:
>
> > we generally don't support full reentrancy for everything, e.g.
> > things like list walks. but we at least try to care about the
> > case where the _current_ element is being removed.
> > the point in doing that trade, is that simply walking a list,
> > check elements and remove them, is a pretty common operation.
> > that's why pretty much all *_forall() implementations of our
> > containers conatin code ala:
> >
> > GList *nnode = node->next;
> > callback (node->data);
> > node = nnode;
> >
> > to cover up for that case. based on that, the proposed changes
> > for slist/list make a lot of sense.
>
> OK. Then the function in Nautilus called nautilus_g_list_safe_for_each can
> go for GNOME 2 then! I assumed it was considered too dangerous to change
> such things without changing the function name.
What's the danger? All currently working code will continue to work,
and we don't guarnatee that code that works with GLib-1.2 will work
with GLib-2.0.
(I would say that if you are planning to remove elements, then doing
g_list_foreach() and g_list_remove() is a poor way to do it. If you
don't simply write it as a loop, which I would tend to do, you really
want a g_list_remove_all_custom() which takes a predicate. I forget if
Maciej's suggested additions have anything like that.)
Regards,
Owen
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]