diff options
author | zeertzjq <zeertzjq@outlook.com> | 2022-10-24 16:50:37 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-10-24 16:50:37 +0800 |
commit | f445f6b0039ebe54680f2d140fc90c4a50a2647b (patch) | |
tree | 6249377800c18864f60ca0ce89363726a8293618 /src/nvim/testdir | |
parent | 29fe3348ba126a334d7e6f06a66f14ec3110d02f (diff) | |
parent | 0ed1429fcb826c0022744fa17edfbe36a750d5f6 (diff) | |
download | rneovim-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.vim | 25 |
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 |