From: Brendan O'Dea Date: Thu, 18 Nov 2004 08:12:55 +0000 (+0000) Subject: - fix case where ll_delete removes the last entry X-Git-Tag: 2.2.1-2fdn3.1~19^2^2~1^2~338 X-Git-Url: http://git.sameswireless.fr/l2tpns.git/commitdiff_plain/11ae5cc20794c275cda97754ae955d64cf8a4c9a - fix case where ll_delete removes the last entry - ll_iterate should pass item->data, not item --- diff --git a/ll.c b/ll.c index 2b00090..a65b2e4 100644 --- a/ll.c +++ b/ll.c @@ -1,6 +1,6 @@ // L2TPNS Linked List Stuff -char const *cvs_id_ll = "$Id: ll.c,v 1.5 2004-08-13 00:02:50 fred_nerk Exp $"; +char const *cvs_id_ll = "$Id: ll.c,v 1.6 2004-11-18 08:12:55 bodea Exp $"; #include #include @@ -74,9 +74,8 @@ void ll_iterate(linked_list *l, int(*func)(void *)) for (i = l->head; i; i = i->next) { - if (i->data) - if (!func(i)) - break; + if (i->data && !func(i->data)) + break; } } @@ -107,8 +106,8 @@ void ll_delete(linked_list *l, void *data) if (i->data == data) { if (l->head == i) l->head = i->next; - if (l->end == i) l->end = i->next; - if (p) p->next = i->next; + if (l->end == i) l->end = p; + if (p) p->next = i->next; free(i); l->current = NULL; return;