aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStefan Monnier2013-04-07 22:08:45 -0400
committerStefan Monnier2013-04-07 22:08:45 -0400
commit8acdeb7104ad8d90f93c7dca6ee0d32149b32fc1 (patch)
treeb094b1d74243cb3ab9fed66aac3d6e434a3017ab
parent285c8184afc5b3ad20b21947ac4c8fee7668c516 (diff)
downloademacs-8acdeb7104ad8d90f93c7dca6ee0d32149b32fc1.tar.gz
emacs-8acdeb7104ad8d90f93c7dca6ee0d32149b32fc1.zip
* lisp/emacs-lisp/timer.el (timer-event-handler): Don't retrigger a canceled
timer. Fixes: debbugs:14156
-rw-r--r--lisp/ChangeLog5
-rw-r--r--lisp/emacs-lisp/timer.el8
2 files changed, 11 insertions, 2 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index a2be1055f46..f5cf9d078e7 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,8 @@
12013-04-08 Stefan Monnier <monnier@iro.umontreal.ca>
2
3 * emacs-lisp/timer.el (timer-event-handler): Don't retrigger a canceled
4 timer (bug#14156).
5
12013-04-07 Nic Ferrier <nferrier@ferrier.me.uk> 62013-04-07 Nic Ferrier <nferrier@ferrier.me.uk>
2 7
3 * emacs-lisp/ert.el (should, should-not, should-error): Add edebug 8 * emacs-lisp/ert.el (should, should-not, should-error): Add edebug
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."
314 (save-current-buffer 314 (save-current-buffer
315 (apply (timer--function timer) (timer--args timer))) 315 (apply (timer--function timer) (timer--args timer)))
316 (error (message "Error in timer: %S" err))) 316 (error (message "Error in timer: %S" err)))
317 (if retrigger 317 (when (and retrigger
318 (setf (timer--triggered timer) nil))) 318 ;; If the timer's been canceled, don't "retrigger" it
319 ;; since it might still be in the copy of timer-list kept
320 ;; by keyboard.c:timer_check (bug#14156).
321 (memq timer timer-list))
322 (setf (timer--triggered timer) nil)))
319 (error "Bogus timer event")))) 323 (error "Bogus timer event"))))
320 324
321;; This function is incompatible with the one in levents.el. 325;; This function is incompatible with the one in levents.el.