summaryrefslogtreecommitdiff
path: root/modules/calendar-sync.el
diff options
context:
space:
mode:
authorCraig Jennings <c@cjennings.net>2026-03-09 23:40:26 -0500
committerCraig Jennings <c@cjennings.net>2026-03-09 23:40:26 -0500
commit4080daf948b23d0b6b59394623e12983f0a9cfad (patch)
tree88a190369d5ecf29ecc03ad94c0808137224c370 /modules/calendar-sync.el
parent3b120b35fff1e21114c7ff189def31b538c7a2ac (diff)
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.
Diffstat (limited to 'modules/calendar-sync.el')
-rw-r--r--modules/calendar-sync.el10
1 files changed, 7 insertions, 3 deletions
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.