1
0
forked from aniani/vim

patch 8.2.2464: using freed memory if window closed in autocommand

Problem:    Using freed memory if window closed in autocommand. (houyunsong)
Solution:   Check the window still exists.
This commit is contained in:
Bram Moolenaar
2021-02-03 21:56:59 +01:00
parent 6bcb877ec1
commit 8ab375706e
3 changed files with 16 additions and 1 deletions

View File

@@ -2768,7 +2768,9 @@ do_ecmd(
did_decrement = close_buffer(oldwin, curbuf,
(flags & ECMD_HIDE) ? 0 : DOBUF_UNLOAD, FALSE, FALSE);
the_curwin->w_closing = FALSE;
// Autocommands may have closed the window.
if (win_valid(the_curwin))
the_curwin->w_closing = FALSE;
--buf->b_locked;
#ifdef FEAT_EVAL

View File

@@ -2726,4 +2726,15 @@ func Test_BufNew_arglocal()
au! BufNew
endfunc
func Test_autocmd_closes_window()
au BufNew,BufWinLeave * e %e
file yyy
au BufNew,BufWinLeave * ball
call assert_fails('n xxx', 'E143:')
bwipe %
au! BufNew
au! BufWinLeave
endfunc
" vim: shiftwidth=2 sts=2 expandtab

View File

@@ -750,6 +750,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
2464,
/**/
2463,
/**/