diff options
| -rw-r--r-- | lisp/emacs-lisp/timer.el | 2 | ||||
| -rw-r--r-- | test/lisp/emacs-lisp/timer-tests.el | 8 |
2 files changed, 9 insertions, 1 deletions
diff --git a/lisp/emacs-lisp/timer.el b/lisp/emacs-lisp/timer.el index 927e640feaa..e140738d9f3 100644 --- a/lisp/emacs-lisp/timer.el +++ b/lisp/emacs-lisp/timer.el @@ -101,7 +101,7 @@ of SECS seconds since the epoch. SECS may be a fraction." time (encode-time time 1000000000000))) (hz (cdr ticks-hz)) - (s-ticks (* secs hz)) + (s-ticks (round (* secs hz))) (more-ticks (+ (car ticks-hz) s-ticks))) (encode-time (cons (- more-ticks (% more-ticks s-ticks)) hz)))) diff --git a/test/lisp/emacs-lisp/timer-tests.el b/test/lisp/emacs-lisp/timer-tests.el index c5971ee7687..7a5b9263b0b 100644 --- a/test/lisp/emacs-lisp/timer-tests.el +++ b/test/lisp/emacs-lisp/timer-tests.el @@ -44,4 +44,12 @@ (timer-next-integral-multiple-of-time '(0 0 0 1) (1+ (ash 1 53))) (list (ash 1 (- 53 16)) 1)))) +(ert-deftest timer-next-integral-multiple-of-time-2 () + "Test bug#33071." + (let* ((tc (current-time)) + (tce (encode-time tc 100)) + (nt (timer-next-integral-multiple-of-time tc 0.01)) + (nte (encode-time nt 100))) + (should (= (car nte) (1+ (car tce)))))) + ;;; timer-tests.el ends here |
