From 4080daf948b23d0b6b59394623e12983f0a9cfad Mon Sep 17 00:00:00 2001 From: Craig Jennings Date: Mon, 9 Mar 2026 23:40:26 -0500 Subject: fix(calendar-sync): handle variable-length date lists in RRULE UNTIL date-to-time used (reverse date) which broke when RRULE UNTIL values were parsed as 5-element lists (year month day hour minute) from UTC timestamps. This caused recurring events with UTC UNTIL dates to expand to 0 occurrences, producing stale calendar entries. --- modules/calendar-sync.el | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) (limited to 'modules/calendar-sync.el') diff --git a/modules/calendar-sync.el b/modules/calendar-sync.el index 106c87f7..610281d2 100644 --- a/modules/calendar-sync.el +++ b/modules/calendar-sync.el @@ -894,9 +894,13 @@ Returns string like '<2025-11-16 Sun 14:00-15:00>' or '<2025-11-16 Sun>'." ;;; Helper Functions (defun calendar-sync--date-to-time (date) - "Convert DATE (year month day) to time value for comparison. -DATE should be a list like (year month day)." - (apply #'encode-time 0 0 0 (reverse date))) + "Convert DATE to time value for comparison. +DATE should be a list starting with (year month day ...). +Only the first three elements are used; extra elements (hour, minute) are ignored." + (let ((day (nth 2 date)) + (month (nth 1 date)) + (year (nth 0 date))) + (encode-time 0 0 0 day month year))) (defun calendar-sync--before-date-p (date1 date2) "Return t if DATE1 is before DATE2. -- cgit v1.2.3