* lisp/calendar/icalendar.el (icalendar--read-element): Avoid a regex
stack overflow by not using regex to extract values from calendar
events. (Bug#24315)
(cherry picked from commit
55dde6c1a21a792d3d75c19e612c74dd054aaf1e)
INVALUE gives the current iCalendar element we are reading.
INPARAMS gives the current parameters.....
This function calls itself recursively for each nested calendar element
-it finds."
+it finds. The current buffer should be an unfolded buffer as returned
+from `icalendar--get-unfolded-buffer'."
(let (element children line name params param param-name param-value
value
(continue t))
(unless (looking-at ":")
(error "Oops"))
(forward-char 1)
- (re-search-forward "\\(.*\\)\\(\r?\n[ \t].*\\)*" nil t)
- (setq value (icalendar--rris "\r?\n[ \t]" "" (match-string 0)))
+ (let ((start (point)))
+ (end-of-line)
+ (setq value (buffer-substring start (point))))
(setq line (list name params value))
(cond ((eq name 'BEGIN)
(setq children