summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKen Murchison <murch@fastmail.com>2020-11-06 09:42:00 -0500
committerKen Murchison <murch@fastmail.com>2020-11-06 09:42:00 -0500
commit2e7761ad448ab283215660a821976a45efeca810 (patch)
tree97eceb52def3b7b06bba69f8884b0d4436a6eba4
parent2f8c227931f719e8e1a17bc9a0f29cb264dba08b (diff)
downloadlibical-git-byweekno_no_byday.tar.gz
icalrecur.c: fix handling of BYWEEKNO with no BYDAY to use the day of week from DTSTART rather than day of monthbyweekno_no_byday
-rw-r--r--src/libical/icalrecur.c4
-rw-r--r--src/test/icalrecur_test.out4
2 files changed, 4 insertions, 4 deletions
diff --git a/src/libical/icalrecur.c b/src/libical/icalrecur.c
index 329718b5..59121d98 100644
--- a/src/libical/icalrecur.c
+++ b/src/libical/icalrecur.c
@@ -2769,8 +2769,8 @@ static int expand_year_days(icalrecur_iterator *impl, int year)
doy = get_day_of_year(impl, year,
impl->dtstart.month, impl->dtstart.day, NULL);
(void)__icaltime_from_day_of_year(impl, doy, year, &weekno);
- if (weekno > doy) weekno = 0;
- start_doy = doy - 7 * (weekno - 1);
+ if (weekno > doy) doy += 7;
+ start_doy = doy + get_start_of_week(impl);
/* Add day of week in each BYWEEKNO to the year days bitmask */
for (i = 0; BYWEEKPTR[i] != ICAL_RECURRENCE_ARRAY_MAX; i++) {
diff --git a/src/test/icalrecur_test.out b/src/test/icalrecur_test.out
index b9f016c2..ffb3960d 100644
--- a/src/test/icalrecur_test.out
+++ b/src/test/icalrecur_test.out
@@ -256,8 +256,8 @@ PREV-INSTANCES:20141206T000000Z,20141205T000000Z,20141204T000000Z,20141203T00000
RRULE:FREQ=YEARLY;BYWEEKNO=1,2;UNTIL=20170101T000000Z
DTSTART:20130101T000000
-INSTANCES:20130101T000000,20130108T000000,20140101T000000,20140108T000000,20150101T000000,20150108T000000,20160108T000000,20160115T000000
-PREV-INSTANCES:20160115T000000,20160108T000000,20150108T000000,20150101T000000,20140108T000000,20140101T000000,20130108T000000,20130101T000000
+INSTANCES:20130101T000000,20130108T000000,20131231T000000,20140107T000000,20141230T000000,20150106T000000,20160105T000000,20160112T000000
+PREV-INSTANCES:20160112T000000,20160105T000000,20150106T000000,20141230T000000,20140107T000000,20131231T000000,20130108T000000,20130101T000000
RRULE:FREQ=YEARLY;BYYEARDAY=366;UNTIL=20200101T000000
DTSTART:20121231T120000