Problem: Using freed memory if window closed in autocommand. (houyunsong)
Solution: Check the window still exists.
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
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
static int included_patches[] =
{ /* Add new patch number below this line */
+/**/
+ 2464,
/**/
2463,
/**/