aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/testdir
diff options
context:
space:
mode:
authorzeertzjq <zeertzjq@outlook.com>2022-10-24 16:50:37 +0800
committerGitHub <noreply@github.com>2022-10-24 16:50:37 +0800
commitf445f6b0039ebe54680f2d140fc90c4a50a2647b (patch)
tree6249377800c18864f60ca0ce89363726a8293618 /src/nvim/testdir
parent29fe3348ba126a334d7e6f06a66f14ec3110d02f (diff)
parent0ed1429fcb826c0022744fa17edfbe36a750d5f6 (diff)
downloadrneovim-f445f6b0039ebe54680f2d140fc90c4a50a2647b.tar.gz
rneovim-f445f6b0039ebe54680f2d140fc90c4a50a2647b.tar.bz2
rneovim-f445f6b0039ebe54680f2d140fc90c4a50a2647b.zip
Merge pull request #20791 from zeertzjq/vim-8.2.0908
vim-patch:8.2.0908: crash when changing the function table while listing it
Diffstat (limited to 'src/nvim/testdir')
-rw-r--r--src/nvim/testdir/test_timers.vim25
1 files changed, 25 insertions, 0 deletions
diff --git a/src/nvim/testdir/test_timers.vim b/src/nvim/testdir/test_timers.vim
index 4d450e180b..771f61442d 100644
--- a/src/nvim/testdir/test_timers.vim
+++ b/src/nvim/testdir/test_timers.vim
@@ -3,6 +3,7 @@
source check.vim
CheckFeature timers
+source screendump.vim
source shared.vim
source term_util.vim
source load.vim
@@ -408,6 +409,30 @@ func Test_timer_invalid_callback()
call assert_fails('call timer_start(0, "0")', 'E921')
endfunc
+func Test_timer_changing_function_list()
+ CheckRunVimInTerminal
+
+ " Create a large number of functions. Should get the "more" prompt.
+ " The typing "G" triggers the timer, which changes the function table.
+ let lines =<< trim END
+ for func in map(range(1,99), "'Func' .. v:val")
+ exe "func " .. func .. "()"
+ endfunc
+ endfor
+ au CmdlineLeave : call timer_start(0, {-> 0})
+ END
+ call writefile(lines, 'XTest_timerchange')
+ let buf = RunVimInTerminal('-S XTest_timerchange', #{rows: 10})
+ call term_sendkeys(buf, ":fu\<CR>")
+ call WaitForAssert({-> assert_match('-- More --', term_getline(buf, 10))})
+ call term_sendkeys(buf, "G")
+ call WaitForAssert({-> assert_match('E454', term_getline(buf, 9))})
+ call term_sendkeys(buf, "\<Esc>")
+
+ call StopVimInTerminal(buf)
+ call delete('XTest_timerchange')
+endfunc
+
func Test_timer_using_win_execute_undo_sync()
let bufnr1 = bufnr()
new