From efb214622a0f4e077c09e721d134552dfe76ef70 Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Sat, 20 Oct 2018 12:52:52 +0300 Subject: [PATCH] Fix 'timer-next-integral-multiple-of-time' * lisp/emacs-lisp/timer.el (timer-next-integral-multiple-of-time): Fix recent change for fractional values of SECS. (Bug#33071) * test/lisp/emacs-lisp/timer-tests.el (timer-next-integral-multiple-of-time-2): New test. --- lisp/emacs-lisp/timer.el | 2 +- test/lisp/emacs-lisp/timer-tests.el | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) 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 -- 2.39.5