diff options
| author | Stefan Monnier | 2013-04-07 22:08:45 -0400 |
|---|---|---|
| committer | Stefan Monnier | 2013-04-07 22:08:45 -0400 |
| commit | 8acdeb7104ad8d90f93c7dca6ee0d32149b32fc1 (patch) | |
| tree | b094b1d74243cb3ab9fed66aac3d6e434a3017ab | |
| parent | 285c8184afc5b3ad20b21947ac4c8fee7668c516 (diff) | |
| download | emacs-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/ChangeLog | 5 | ||||
| -rw-r--r-- | lisp/emacs-lisp/timer.el | 8 |
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 @@ | |||
| 1 | 2013-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 | |||
| 1 | 2013-04-07 Nic Ferrier <nferrier@ferrier.me.uk> | 6 | 2013-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. |