diff options
-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) |