summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKen Murchison <murch@fastmail.com>2019-05-18 17:45:21 -0400
committerKen Murchison <murch@fastmail.com>2019-05-18 17:46:16 -0400
commitafa976ad016f60b41df6957dce55649e88647ee7 (patch)
treed546eb024606c83b53794a899c988159377ff505
parent87cd4152275e4c9aa37df372c00b94cc1992e04d (diff)
downloadlibical-git-afa976ad016f60b41df6957dce55649e88647ee7.tar.gz
Fix for issue #376
-rw-r--r--src/libical/icalrecur.c5
-rw-r--r--src/test/icalrecur_test.c11
-rw-r--r--src/test/icalrecur_test.out9
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