* lisp/emacs-lisp/timer.el (timer-event-handler): Don't retrigger a canceled

timer.

Fixes: debbugs:14156
This commit is contained in:
Stefan Monnier 2013-04-07 22:08:45 -04:00
parent 285c8184af
commit 8acdeb7104
2 changed files with 11 additions and 2 deletions

View file

@ -1,3 +1,8 @@
2013-04-08 Stefan Monnier <monnier@iro.umontreal.ca>
* emacs-lisp/timer.el (timer-event-handler): Don't retrigger a canceled
timer (bug#14156).
2013-04-07 Nic Ferrier <nferrier@ferrier.me.uk>
* emacs-lisp/ert.el (should, should-not, should-error): Add edebug

View file

@ -314,8 +314,12 @@ This function is called, by name, directly by the C code."
(save-current-buffer
(apply (timer--function timer) (timer--args timer)))
(error (message "Error in timer: %S" err)))
(if retrigger
(setf (timer--triggered timer) nil)))
(when (and retrigger
;; If the timer's been canceled, don't "retrigger" it
;; since it might still be in the copy of timer-list kept
;; by keyboard.c:timer_check (bug#14156).
(memq timer timer-list))
(setf (timer--triggered timer) nil)))
(error "Bogus timer event"))))
;; This function is incompatible with the one in levents.el.