From 8acdeb7104ad8d90f93c7dca6ee0d32149b32fc1 Mon Sep 17 00:00:00 2001 From: Stefan Monnier Date: Sun, 7 Apr 2013 22:08:45 -0400 Subject: * lisp/emacs-lisp/timer.el (timer-event-handler): Don't retrigger a canceled timer. Fixes: debbugs:14156 --- lisp/emacs-lisp/timer.el | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'lisp/emacs-lisp/timer.el') diff --git a/lisp/emacs-lisp/timer.el b/lisp/emacs-lisp/timer.el index 8b019d0a785..8b1dca8cb78 100644 --- a/lisp/emacs-lisp/timer.el +++ b/lisp/emacs-lisp/timer.el @@ -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. -- cgit v1.2.3