diff options
author | Bram Moolenaar <Bram@vim.org> | 2021-12-09 18:42:57 +0000 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2021-12-09 18:42:57 +0000 |
commit | 95b2dd0c008f0977ebb3cbe233a5064001a332e1 (patch) | |
tree | d797d7d90ff2277f2f1cca2910e1b3c7d8d4e364 | |
parent | e8a92b6166e32f8e583e01c9f541cf81cf76f8e6 (diff) | |
download | vim-git-95b2dd0c008f0977ebb3cbe233a5064001a332e1.tar.gz |
patch 8.2.3768: timer_info() has the wrong repeat value in a timer callbackv8.2.3768
Problem: timer_info() has the wrong repeat value in a timer callback.
Solution: Do not add one to the repeat value when in the callback.
(closes #9294)
-rw-r--r-- | src/testdir/test_timers.vim | 7 | ||||
-rw-r--r-- | src/time.c | 3 | ||||
-rw-r--r-- | src/version.c | 2 |
3 files changed, 11 insertions, 1 deletions
diff --git a/src/testdir/test_timers.vim b/src/testdir/test_timers.vim index 865a03b6d..c833dd837 100644 --- a/src/testdir/test_timers.vim +++ b/src/testdir/test_timers.vim @@ -117,6 +117,13 @@ func Test_timer_info() call assert_equal([], timer_info(id)) call assert_fails('call timer_info("abc")', 'E39:') + + " check repeat count inside the callback + let g:timer_repeat = [] + let tid = timer_start(10, {tid -> execute("call add(g:timer_repeat, timer_info(tid)[0].repeat)")}, #{repeat: 3}) + sleep 100m + call assert_equal([2, 1, 0], g:timer_repeat) + unlet g:timer_repeat endfunc func Test_timer_stopall() diff --git a/src/time.c b/src/time.c index 362fd4645..bb4a20282 100644 --- a/src/time.c +++ b/src/time.c @@ -696,7 +696,8 @@ add_timer_info(typval_T *rettv, timer_T *timer) dict_add_number(dict, "remaining", (long)remaining); dict_add_number(dict, "repeat", - (long)(timer->tr_repeat < 0 ? -1 : timer->tr_repeat + 1)); + (long)(timer->tr_repeat < 0 ? -1 + : timer->tr_repeat + (timer->tr_firing ? 0 : 1))); dict_add_number(dict, "paused", (long)(timer->tr_paused)); di = dictitem_alloc((char_u *)"callback"); diff --git a/src/version.c b/src/version.c index c3e34e4a9..473b93443 100644 --- a/src/version.c +++ b/src/version.c @@ -754,6 +754,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 3768, +/**/ 3767, /**/ 3766, |