2016-07-22 17:01, Sergio Gonzalez Monroy: > Removing/freeing elements elements within a STAILQ_FOREACH loop > is not safe. FreeBSD defines STAILQ_FOREACH_SAFE macro, which permits > these operations safely. > > This patch defines this macro for Linux systems, where it is not defined. [...] > +#ifndef SLIST_FOREACH_SAFE > +#define SLIST_FOREACH_SAFE(var, head, field, tvar) \ > + for ((var) = SLIST_FIRST((head)); \ > + (var) && ((tvar) = SLIST_NEXT((var), field), 1); \ > + (var) = (tvar)) > +#endif
The patch 2 requires STAILQ_FOREACH_SAFE, not SLIST_FOREACH_SAFE.