[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: interface groups
Henning Brauer <lists-openbsdtech@bsws.de> writes:
> * Philipp Buehler <pb@openbsd.org> [2004-06-22 10:06]:
> > + TAILQ_FOREACH(ifgp, &ifp->if_groups, group_list) {
> > + TAILQ_REMOVE(&ifp->if_groups, ifgp, group_list);
>
> no... see manpage
>
> NOTES
> Trying to free a list in the following way is a common error:
>
> LIST_FOREACH(var, head, entry)
> free(var);
> free(head);
>
> Since var is free'd, the FOREACH() macro refers to a pointer that may
> have been reallocated already. Proper code needs a second variable.
>
> for (var = LIST_FIRST(head); var != LIST_END(head); var = nxt) {
> nxt = LIST_NEXT(var, entry);
> free(var);
> }
> LIST_INIT(head); /* to put the list back in order */
Stop giving bad advice. :)
while ((foo = TAILQ_FIRST(..)) != NULL) {
TAILQ_REMOVE(foo ...);
free(foo);
}
//art