From c06dbbabd1498d614d4db88bb4205e2afcd6dab8 Mon Sep 17 00:00:00 2001 From: Martin Willi Date: Wed, 8 Feb 2006 15:25:34 +0000 Subject: - fixed alot of bugs in child_proposal - near to working state ;-) --- Source/charon/utils/linked_list.c | 28 ++++++++++++++++++++++++++-- 1 file changed, 26 insertions(+), 2 deletions(-) (limited to 'Source/charon/utils/linked_list.c') diff --git a/Source/charon/utils/linked_list.c b/Source/charon/utils/linked_list.c index 69e0ffc12..f3e686a5a 100644 --- a/Source/charon/utils/linked_list.c +++ b/Source/charon/utils/linked_list.c @@ -360,6 +360,23 @@ static int get_count(private_linked_list_t *this) return this->count; } +/** + * Implementation of linked_list_t.call_on_items. + */ +static void call_on_items(private_linked_list_t *this, void(*func)(void*)) +{ + iterator_t *iterator; + void *item; + + iterator = this->public.create_iterator(&(this->public),TRUE); + + while (iterator->has_next(iterator)) + { + iterator->current(iterator, &item); + (*func)(item); + } + iterator->destroy(iterator); +} /** * Implementation of linked_list_t.insert_first. @@ -408,7 +425,10 @@ static status_t remove_first(private_linked_list_t *this, void **item) } this->first = element->next; - *item = element->value; + if (item != NULL) + { + *item = element->value; + } this->count--; @@ -478,7 +498,10 @@ static status_t remove_last(private_linked_list_t *this, void **item) } this->last = element->previous; - *item = element->value; + if (item != NULL) + { + *item = element->value; + } this->count--; @@ -649,6 +672,7 @@ linked_list_t *linked_list_create() this->public.get_count = (int (*) (linked_list_t *)) get_count; this->public.create_iterator = (iterator_t * (*) (linked_list_t *,bool )) create_iterator; + this->public.call_on_items = (void (*) (linked_list_t *, void(*func)(void*)))call_on_items; this->public.get_first = (status_t (*) (linked_list_t *, void **item)) get_first; this->public.get_last = (status_t (*) (linked_list_t *, void **item)) get_last; this->public.insert_first = (void (*) (linked_list_t *, void *item)) insert_first; -- cgit v1.2.3