summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDoug Christman <douglaschristman@gmail.com>2017-02-12 00:39:17 -0500
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>2017-02-12 00:39:17 -0500
commit963e3d8373a94af8093e3ca674452b366c12ac09 (patch)
tree10c651ae71c3d9c8ee09db33d2755c99c46a4484
parent0d7578dc30b9c9e8eb213e517d4928f222764a44 (diff)
downloadsystemd-963e3d8373a94af8093e3ca674452b366c12ac09.tar.gz
calendarspec: fix duplicate detection (#5310)
a2eb5ea79c added a new field to `CalendarComponent`; update `normalize_chain` to compare all fields when dropping duplicates
-rw-r--r--src/basic/calendarspec.c3
-rw-r--r--src/test/test-calendarspec.c1
2 files changed, 2 insertions, 2 deletions
diff --git a/src/basic/calendarspec.c b/src/basic/calendarspec.c
index 3fa1c51ace..2323eb8555 100644
--- a/src/basic/calendarspec.c
+++ b/src/basic/calendarspec.c
@@ -116,8 +116,7 @@ static void normalize_chain(CalendarComponent **c) {
/* Drop non-unique entries */
for (k = n-1; k > 0; k--) {
- if (b[k-1]->start == next->start &&
- b[k-1]->repeat == next->repeat) {
+ if (component_compare(&b[k-1], &next) == 0) {
free(b[k-1]);
continue;
}
diff --git a/src/test/test-calendarspec.c b/src/test/test-calendarspec.c
index 1f34a91b10..f90b73aeaf 100644
--- a/src/test/test-calendarspec.c
+++ b/src/test/test-calendarspec.c
@@ -192,6 +192,7 @@ int main(int argc, char* argv[]) {
test_one("00..07-*-*", "2000..2007-*-* 00:00:00");
test_one("*:20..39/5", "*-*-* *:20..35/5:00");
test_one("00:00:20..40/1", "*-*-* 00:00:20..40");
+ test_one("*~03/1,03..05", "*-*~03/1,03..05 00:00:00");
test_next("2016-03-27 03:17:00", "", 12345, 1459048620000000);
test_next("2016-03-27 03:17:00", "CET", 12345, 1459041420000000);