diff options
| author | zeertzjq <zeertzjq@outlook.com> | 2023-04-25 23:19:00 +0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-04-25 23:19:00 +0800 |
| commit | ac9f8669a8e4bd0cf13468d316d1746be65d3cdc (patch) | |
| tree | df048541b93297fd2de9038301dbaaab2bb114be /test/old | |
| parent | cacc2dc4192d17439107453733e7da6a4043cdd0 (diff) | |
| download | rneovim-ac9f8669a8e4bd0cf13468d316d1746be65d3cdc.tar.gz rneovim-ac9f8669a8e4bd0cf13468d316d1746be65d3cdc.tar.bz2 rneovim-ac9f8669a8e4bd0cf13468d316d1746be65d3cdc.zip | |
vim-patch:9.0.0875: using freed memory when executing delfunc at more prompt (#23314)
Problem: Using freed memory when executing delfunc at the more prompt.
Solution: Check function list not changed in another place. (closes vim/vim#11437)
https://github.com/vim/vim/commit/398a26f7fcd58fbc6e2329f892edbb7479a971bb
Co-authored-by: Bram Moolenaar <Bram@vim.org>
Diffstat (limited to 'test/old')
| -rw-r--r-- | test/old/testdir/test_functions.vim | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/test/old/testdir/test_functions.vim b/test/old/testdir/test_functions.vim index a1f34ea8b6..0dd780e3fb 100644 --- a/test/old/testdir/test_functions.vim +++ b/test/old/testdir/test_functions.vim @@ -2618,4 +2618,31 @@ func Test_virtcol() bwipe! endfunc +func Test_delfunc_while_listing() + CheckRunVimInTerminal + + let lines =<< trim END + set nocompatible + for i in range(1, 999) + exe 'func ' .. 'MyFunc' .. i .. '()' + endfunc + endfor + au CmdlineLeave : call timer_start(0, {-> execute('delfunc MyFunc622')}) + END + call writefile(lines, 'Xfunctionclear', 'D') + let buf = RunVimInTerminal('-S Xfunctionclear', {'rows': 12}) + + " This was using freed memory. The height of the terminal must be so that + " the next function to be listed with "j" is the one that is deleted in the + " timer callback, tricky! + call term_sendkeys(buf, ":func /MyFunc\<CR>") + call TermWait(buf, 50) + call term_sendkeys(buf, "j") + call TermWait(buf, 50) + call term_sendkeys(buf, "\<CR>") + + call StopVimInTerminal(buf) +endfunc + + " vim: shiftwidth=2 sts=2 expandtab |