diff options
author | Bram Moolenaar <Bram@vim.org> | 2022-11-13 17:53:46 +0000 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2022-11-13 17:53:46 +0000 |
commit | 3b014befa006b7224a84d7d58d9603fc261f34cd (patch) | |
tree | e3fd53778f0a9a46bb46e6d096ece9e0f51ac18f /src/testdir/test_autocmd.vim | |
parent | 2f7bfe66a1373051792f2ecaeefb66049825221d (diff) |
patch 9.0.0871: using freed memory when clearing augroup at more promptv9.0.0871
Problem: Using freed memory when clearing augroup at more prompt.
Solution: Delay clearing augroup until it's safe. (closes #11441)
Diffstat (limited to 'src/testdir/test_autocmd.vim')
-rw-r--r-- | src/testdir/test_autocmd.vim | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/src/testdir/test_autocmd.vim b/src/testdir/test_autocmd.vim index 04f3e1431c..f2f3725b3d 100644 --- a/src/testdir/test_autocmd.vim +++ b/src/testdir/test_autocmd.vim @@ -62,6 +62,7 @@ if has('timers') set updatetime=20 call timer_start(200, 'ExitInsertMode') call feedkeys('a', 'x!') + sleep 30m call assert_equal(1, g:triggered) unlet g:triggered au! CursorHoldI @@ -2159,6 +2160,27 @@ func Test_autocmd_user() unlet s:res endfunc +func Test_autocmd_user_clear_group() + CheckRunVimInTerminal + + let lines =<< trim END + autocmd! User + for i in range(1, 999) + exe 'autocmd User ' .. 'Foo' .. i .. ' bar' + endfor + au CmdlineLeave : call timer_start(0, {-> execute('autocmd! User')}) + END + call writefile(lines, 'XautoUser', 'D') + let buf = RunVimInTerminal('-S XautoUser', {'rows': 10}) + + " this was using freed memory + call term_sendkeys(buf, ":autocmd User\<CR>") + call TermWait(buf, 50) + call term_sendkeys(buf, "G") + + call StopVimInTerminal(buf) +endfunc + function s:Before_test_dirchanged() augroup test_dirchanged autocmd! |