diff --git a/legacy/eina/ChangeLog b/legacy/eina/ChangeLog index d194bb7920..eca111fa1c 100644 --- a/legacy/eina/ChangeLog +++ b/legacy/eina/ChangeLog @@ -10,3 +10,6 @@ * Added eina_unicode_strndup +2011-02-16 Mike Blumenkrantz + + * EINA_INLIST_FOREACH_SAFE diff --git a/legacy/eina/src/include/eina_inlist.h b/legacy/eina/src/include/eina_inlist.h index 03b16656f3..0add2b93a1 100644 --- a/legacy/eina/src/include/eina_inlist.h +++ b/legacy/eina/src/include/eina_inlist.h @@ -98,6 +98,10 @@ EAPI Eina_Accessor *eina_inlist_accessor_new(const Eina_Inlist *in_list) EINA_MA #define EINA_INLIST_FOREACH(list, l) \ for (l = NULL, l = (list ? _EINA_INLIST_CONTAINER(l, list) : NULL); l; \ l = (EINA_INLIST_GET(l)->next ? _EINA_INLIST_CONTAINER(l, EINA_INLIST_GET(l)->next) : NULL)) +#define EINA_INLIST_FOREACH_SAFE(list, list2, l) \ + for (l = (list ? _EINA_INLIST_CONTAINER(l, list) : NULL), list2 = l ? ((EINA_INLIST_GET(l) ? EINA_INLIST_GET(l)->next : NULL)) : NULL; \ + l; \ + l = _EINA_INLIST_CONTAINER(l, list2), list2 = list2 ? list2->next : NULL) #define EINA_INLIST_REVERSE_FOREACH(list, l) \ for (l = NULL, l = (list ? _EINA_INLIST_CONTAINER(l, list->last) : NULL); \ l; l = (EINA_INLIST_GET(l)->prev ? _EINA_INLIST_CONTAINER(l, EINA_INLIST_GET(l)->prev) : NULL))