diff options
author | Tobias Brunner <tobias@strongswan.org> | 2013-07-16 14:46:43 +0200 |
---|---|---|
committer | Tobias Brunner <tobias@strongswan.org> | 2013-07-17 17:42:53 +0200 |
commit | 1a9528f916166625889c201dc4acad9bb46db237 (patch) | |
tree | 3a11559ad1a1986a4bd17e127a96fb30c6dc2768 /src | |
parent | cf4172637a9f4740e9545a3e90628bc5775e3452 (diff) | |
download | strongswan-1a9528f916166625889c201dc4acad9bb46db237.tar.bz2 strongswan-1a9528f916166625889c201dc4acad9bb46db237.tar.xz |
linked-list: Don't require an argument for the item when enumerating
Diffstat (limited to 'src')
-rw-r--r-- | src/libstrongswan/collections/linked_list.c | 5 | ||||
-rw-r--r-- | src/libstrongswan/tests/test_linked_list_enumerator.c | 17 |
2 files changed, 21 insertions, 1 deletions
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); |