From 1a9528f916166625889c201dc4acad9bb46db237 Mon Sep 17 00:00:00 2001 From: Tobias Brunner Date: Tue, 16 Jul 2013 14:46:43 +0200 Subject: linked-list: Don't require an argument for the item when enumerating --- src/libstrongswan/collections/linked_list.c | 5 ++++- src/libstrongswan/tests/test_linked_list_enumerator.c | 17 +++++++++++++++++ 2 files changed, 21 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/libstrongswan/collections/linked_list.c b/src/libstrongswan/collections/linked_list.c index 274ad8e5b..dbbc2a98d 100644 --- a/src/libstrongswan/collections/linked_list.c +++ b/src/libstrongswan/collections/linked_list.c @@ -138,7 +138,10 @@ METHOD(enumerator_t, enumerate, bool, this->finished = TRUE; return FALSE; } - *item = this->current->value; + if (item) + { + *item = this->current->value; + } return TRUE; } diff --git a/src/libstrongswan/tests/test_linked_list_enumerator.c b/src/libstrongswan/tests/test_linked_list_enumerator.c index 840e384c9..93d814b2c 100644 --- a/src/libstrongswan/tests/test_linked_list_enumerator.c +++ b/src/libstrongswan/tests/test_linked_list_enumerator.c @@ -59,6 +59,22 @@ START_TEST(test_enumerate) } END_TEST +START_TEST(test_enumerate_null) +{ + enumerator_t *enumerator; + int round; + + round = 1; + enumerator = list->create_enumerator(list); + while (enumerator->enumerate(enumerator, NULL)) + { + round++; + } + ck_assert_int_eq(round, 6); + enumerator->destroy(enumerator); +} +END_TEST + START_TEST(test_reset_enumerator) { enumerator_t *enumerator; @@ -364,6 +380,7 @@ Suite *linked_list_enumerator_suite_create() tc = tcase_create("enumerate"); tcase_add_checked_fixture(tc, setup_list, teardown_list); tcase_add_test(tc, test_enumerate); + tcase_add_test(tc, test_enumerate_null); tcase_add_test(tc, test_reset_enumerator); tcase_add_test(tc, test_has_more_empty); tcase_add_test(tc, test_has_more); -- cgit v1.2.3