diff options
author | Ken Murchison <murch@fastmail.com> | 2019-05-18 17:45:21 -0400 |
---|---|---|
committer | Ken Murchison <murch@fastmail.com> | 2019-05-18 17:46:16 -0400 |
commit | afa976ad016f60b41df6957dce55649e88647ee7 (patch) | |
tree | d546eb024606c83b53794a899c988159377ff505 | |
parent | 87cd4152275e4c9aa37df372c00b94cc1992e04d (diff) | |
download | libical-git-afa976ad016f60b41df6957dce55649e88647ee7.tar.gz |
Fix for issue #376
-rw-r--r-- | src/libical/icalrecur.c | 5 | ||||
-rw-r--r-- | src/test/icalrecur_test.c | 11 | ||||
-rw-r--r-- | src/test/icalrecur_test.out | 9 |
3 files changed, 25 insertions, 0 deletions
diff --git a/src/libical/icalrecur.c b/src/libical/icalrecur.c index f7a65e66..afacedad 100644 --- a/src/libical/icalrecur.c +++ b/src/libical/icalrecur.c @@ -3016,6 +3016,11 @@ static int __iterator_set_start(icalrecur_iterator *impl, icaltimetype start) } else { adjust_to_byday(impl); + /* If start == DTSTART, adjust rstart */ + if (icaltime_compare(start, impl->dtstart) == 0) { + impl->rstart = occurrence_as_icaltime(impl, 0); + } + /* Get (adjusted) start date as RSCALE date */ start = occurrence_as_icaltime(impl, 0); diff --git a/src/test/icalrecur_test.c b/src/test/icalrecur_test.c index e738f691..5e8ca3af 100644 --- a/src/test/icalrecur_test.c +++ b/src/test/icalrecur_test.c @@ -364,6 +364,12 @@ const struct recur rfc5545[] = { "FREQ=WEEKLY;UNTIL=20170127T000000Z;WKST=MO;BYDAY=SU,TU,TH;INTERVAL=2", "20161231T090000"}, + /* Bi-weekly on Sunday, Tuesday, and Thursday until January 27, 2017, + starting second day of 2017 */ + {"20161229T090000", + "FREQ=WEEKLY;UNTIL=20170127T000000Z;WKST=MO;BYDAY=SU,TU,TH;INTERVAL=2", + "20170102T090000"}, + /* Every 3rd day in January, starting on the 10th */ {"20170101T090000", "FREQ=DAILY;UNTIL=20170131T140000Z;BYMONTH=1;INTERVAL=3", @@ -380,6 +386,11 @@ const struct recur rfc5545[] = { "FREQ=MONTHLY;INTERVAL=13;BYMONTH=5;COUNT=3", NULL}, + /* github issue376 */ + {"20190101T100000", + "FREQ=WEEKLY;BYDAY=WE,FR;INTERVAL=2;COUNT=4", + NULL}, + {NULL, NULL, NULL} }; diff --git a/src/test/icalrecur_test.out b/src/test/icalrecur_test.out index fa48b037..c08a19eb 100644 --- a/src/test/icalrecur_test.out +++ b/src/test/icalrecur_test.out @@ -250,6 +250,11 @@ DTSTART:20161229T090000 START-AT:20161231T090000 INSTANCES:20170101T090000,20170110T090000,20170112T090000,20170115T090000,20170124T090000,20170126T090000 +RRULE:FREQ=WEEKLY;UNTIL=20170127T000000Z;WKST=MO;BYDAY=SU,TU,TH;INTERVAL=2 +DTSTART:20161229T090000 +START-AT:20170102T090000 +INSTANCES:20170110T090000,20170112T090000,20170115T090000,20170124T090000,20170126T090000 + RRULE:FREQ=DAILY;UNTIL=20170131T140000Z;BYMONTH=1;INTERVAL=3 DTSTART:20170101T090000 START-AT:20170103T090000 @@ -263,3 +268,7 @@ INSTANCES:20170903T000000,20170903T030000,20170903T060000,20170903T090000,201709 RRULE:FREQ=MONTHLY;INTERVAL=13;BYMONTH=5;COUNT=3 DTSTART:20100212T000000 INSTANCES:20130512T000000,20260512T000000,20390512T000000 + +RRULE:FREQ=WEEKLY;BYDAY=WE,FR;INTERVAL=2;COUNT=4 +DTSTART:20190101T100000 +INSTANCES:20190102T100000,20190104T100000,20190116T100000,20190118T100000 |