1
0
forked from aniani/vim

patch 9.0.0949: crash when unletting a variable while listing variables

Problem:    Crash when unletting a variable while listing variables.
Solution:   Disallow changing a hashtable while going over the entries.
            (closes #11435)
This commit is contained in:
Bram Moolenaar
2022-11-25 16:31:51 +00:00
parent c1cf4c9107
commit ef2c325f5e
21 changed files with 143 additions and 68 deletions

View File

@@ -2326,6 +2326,28 @@ func Test_autocmd_user_clear_group()
call StopVimInTerminal(buf)
endfunc
func Test_autocmd_CmdlineLeave_unlet()
CheckRunVimInTerminal
let lines =<< trim END
for i in range(1, 999)
exe 'let g:var' .. i '=' i
endfor
au CmdlineLeave : call timer_start(0, {-> execute('unlet g:var990')})
END
call writefile(lines, 'XleaveUnlet', 'D')
let buf = RunVimInTerminal('-S XleaveUnlet', {'rows': 10})
" this was using freed memory
call term_sendkeys(buf, ":let g:\<CR>")
call TermWait(buf, 50)
call term_sendkeys(buf, "G")
call TermWait(buf, 50)
call term_sendkeys(buf, "\<CR>") " for the hit-enter prompt
call StopVimInTerminal(buf)
endfunc
function s:Before_test_dirchanged()
augroup test_dirchanged
autocmd!