diff options
author | Hugo Hörnquist <hugo@lysator.liu.se> | 2020-07-27 00:06:31 +0200 |
---|---|---|
committer | Hugo Hörnquist <hugo@lysator.liu.se> | 2020-07-27 00:06:31 +0200 |
commit | c60b7b34759f866549752a97a83c12f04f8a903e (patch) | |
tree | a732b950e38036bf007b2ae694146ccf99638a1a /module/vcomponent | |
parent | Change html-id to randomly generate. (diff) | |
download | calp-c60b7b34759f866549752a97a83c12f04f8a903e.tar.gz calp-c60b7b34759f866549752a97a83c12f04f8a903e.tar.xz |
Crash properly on overflow on remove event.
Diffstat (limited to '')
-rw-r--r-- | module/vcomponent.scm | 29 |
1 files changed, 14 insertions, 15 deletions
diff --git a/module/vcomponent.scm b/module/vcomponent.scm index 215ab984..2e13f1c8 100644 --- a/module/vcomponent.scm +++ b/module/vcomponent.scm @@ -105,23 +105,22 @@ (define-public (remove-event event) - - (let ((events (getf 'events))) - (setf 'events (delete event events))) + (let ((events (delete event (getf 'events)))) + (setf 'events events)) (if (repeating? event) - (let ((repeating (getf 'repeating-events))) - (setf 'repeating-events (delete event repeating))) - (let ((regular (getf 'fixed-events))) - (setf 'fixed-events (delete event regular)))) - - (let ((event-set (getf 'event-set))) - (setf 'event-set - (stream-remove - (lambda (ev) - (equal? (prop ev 'UID) - (prop event 'UID))) - event-set))) + (let ((repeating (delete event (getf 'repeating-events)))) + (setf 'repeating-events repeating)) + (let ((regular (delete event (getf 'fixed-events)))) + (setf 'fixed-events regular))) + + (let ((event-set + (stream-remove + (lambda (ev) + (equal? (prop ev 'UID) + (prop event 'UID))) + (getf 'event-set)))) + (setf 'event-set event-set)) (hash-set! (getf 'uid-map) (prop event 'UID) #f)) |