diff options
author | Abdelhakeem Osama <abdelhakeem.osama@hotmail.com> | 2019-08-25 10:11:22 +0300 |
---|---|---|
committer | Justin M. Keyes <justinkz@gmail.com> | 2019-08-25 09:11:22 +0200 |
commit | 2e621553c089ca6b7de5123a9c63a7a54ee06c20 (patch) | |
tree | b445ce37ef995c7ecb6a785cb1de20d30d1f85a4 | |
parent | 34e416667378a610943f614b97da9b865d622806 (diff) | |
download | rneovim-2e621553c089ca6b7de5123a9c63a7a54ee06c20.tar.gz rneovim-2e621553c089ca6b7de5123a9c63a7a54ee06c20.tar.bz2 rneovim-2e621553c089ca6b7de5123a9c63a7a54ee06c20.zip |
teardown: fix win_free_all() heap-use-after-free #10839
Fixes #10838
-rw-r--r-- | src/nvim/window.c | 3 | ||||
-rw-r--r-- | test/functional/api/vim_spec.lua | 5 |
2 files changed, 8 insertions, 0 deletions
diff --git a/src/nvim/window.c b/src/nvim/window.c index 4173245439..b5d34bbbdb 100644 --- a/src/nvim/window.c +++ b/src/nvim/window.c @@ -2698,6 +2698,9 @@ void win_free_all(void) win_T *wp = lastwin; win_remove(lastwin, NULL); (void)win_free_mem(wp, &dummy, NULL); + if (wp == aucmd_win) { + aucmd_win = NULL; + } } if (aucmd_win != NULL) { diff --git a/test/functional/api/vim_spec.lua b/test/functional/api/vim_spec.lua index cd45914552..0cd81619c1 100644 --- a/test/functional/api/vim_spec.lua +++ b/test/functional/api/vim_spec.lua @@ -1510,5 +1510,10 @@ describe('API', function() | ]]) end) + + it('does not cause heap-use-after-free on exit while setting options', function() + command('au OptionSet * q') + command('silent! call nvim_create_buf(0, 1)') + end) end) end) |