aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/testdir
diff options
context:
space:
mode:
authorJan Edmund Lazo <jan.lazo@mail.utoronto.ca>2019-10-20 20:12:08 -0400
committerJan Edmund Lazo <jan.lazo@mail.utoronto.ca>2019-10-21 07:34:06 -0400
commitc067efa696698d455d9a1488c26e0fb5d8cb5bf5 (patch)
tree52d3d1834007ec83923f0af8c08433470875f748 /src/nvim/testdir
parent13a6878d187612721baecede181e7dfdc3699a59 (diff)
downloadrneovim-c067efa696698d455d9a1488c26e0fb5d8cb5bf5.tar.gz
rneovim-c067efa696698d455d9a1488c26e0fb5d8cb5bf5.tar.bz2
rneovim-c067efa696698d455d9a1488c26e0fb5d8cb5bf5.zip
vim-patch:8.1.2197: ExitPre autocommand may cause accessing freed memory
Problem: ExitPre autocommand may cause accessing freed memory. Solution: Check the window pointer is still valid. (closes vim/vim#5093) https://github.com/vim/vim/commit/34ba06b6e6f94bb46062e6c85dbfdcbb0d255ada
Diffstat (limited to 'src/nvim/testdir')
-rw-r--r--src/nvim/testdir/test_exit.vim22
1 files changed, 22 insertions, 0 deletions
diff --git a/src/nvim/testdir/test_exit.vim b/src/nvim/testdir/test_exit.vim
index 3797626abf..99a401d4a4 100644
--- a/src/nvim/testdir/test_exit.vim
+++ b/src/nvim/testdir/test_exit.vim
@@ -40,6 +40,7 @@ func Test_exiting()
endif
call delete('Xtestout')
+ " ExitPre autocommand splits the window, so that it's no longer the last one.
let after =<< trim [CODE]
au QuitPre * call writefile(["QuitPre"], "Xtestout", "a")
au ExitPre * call writefile(["ExitPre"], "Xtestout", "a")
@@ -58,4 +59,25 @@ func Test_exiting()
\ readfile('Xtestout'))
endif
call delete('Xtestout')
+
+ " ExitPre autocommand splits and closes the window, so that there is still
+ " one window but it's a different one.
+ let after =<< trim [CODE]
+ au QuitPre * call writefile(["QuitPre"], "Xtestout", "a")
+ au ExitPre * call writefile(["ExitPre"], "Xtestout", "a")
+ augroup nasty
+ au ExitPre * split | only
+ augroup END
+ quit
+ augroup nasty
+ au! ExitPre
+ augroup END
+ quit
+ [CODE]
+
+ if RunVim([], after, '')
+ call assert_equal(['QuitPre', 'ExitPre', 'QuitPre', 'ExitPre'],
+ \ readfile('Xtestout'))
+ endif
+ call delete('Xtestout')
endfunc