aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorTobias Brunner <tobias@strongswan.org>2013-07-16 14:46:43 +0200
committerTobias Brunner <tobias@strongswan.org>2013-07-17 17:42:53 +0200
commit1a9528f916166625889c201dc4acad9bb46db237 (patch)
tree3a11559ad1a1986a4bd17e127a96fb30c6dc2768 /src
parentcf4172637a9f4740e9545a3e90628bc5775e3452 (diff)
downloadstrongswan-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.c5
-rw-r--r--src/libstrongswan/tests/test_linked_list_enumerator.c17
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);