patch 8.2.3768: timer_info() has the wrong repeat value in a timer callback
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)
This commit is contained in:
@ -117,6 +117,13 @@ func Test_timer_info()
|
|||||||
call assert_equal([], timer_info(id))
|
call assert_equal([], timer_info(id))
|
||||||
|
|
||||||
call assert_fails('call timer_info("abc")', 'E39:')
|
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
|
endfunc
|
||||||
|
|
||||||
func Test_timer_stopall()
|
func Test_timer_stopall()
|
||||||
|
|||||||
@ -696,7 +696,8 @@ add_timer_info(typval_T *rettv, timer_T *timer)
|
|||||||
dict_add_number(dict, "remaining", (long)remaining);
|
dict_add_number(dict, "remaining", (long)remaining);
|
||||||
|
|
||||||
dict_add_number(dict, "repeat",
|
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));
|
dict_add_number(dict, "paused", (long)(timer->tr_paused));
|
||||||
|
|
||||||
di = dictitem_alloc((char_u *)"callback");
|
di = dictitem_alloc((char_u *)"callback");
|
||||||
|
|||||||
@ -753,6 +753,8 @@ static char *(features[]) =
|
|||||||
|
|
||||||
static int included_patches[] =
|
static int included_patches[] =
|
||||||
{ /* Add new patch number below this line */
|
{ /* Add new patch number below this line */
|
||||||
|
/**/
|
||||||
|
3768,
|
||||||
/**/
|
/**/
|
||||||
3767,
|
3767,
|
||||||
/**/
|
/**/
|
||||||
|
|||||||
Reference in New Issue
Block a user