mirror of
https://github.com/vim/vim.git
synced 2025-09-23 03:43:49 -04:00
patch 7.4.2324
Problem: Crash when editing a new buffer and BufUnload autocommand wipes out the new buffer. (Norio Takagi) Solution: Don't allow wiping out this buffer. (partly by Hirohito Higashi) Move old style test13 into test_autocmd. Avoid ml_get error when editing a file.
This commit is contained in:
10
src/window.c
10
src/window.c
@@ -2127,7 +2127,7 @@ close_windows(
|
||||
{
|
||||
if (wp->w_buffer == buf && (!keep_curwin || wp != curwin)
|
||||
#ifdef FEAT_AUTOCMD
|
||||
&& !(wp->w_closing || wp->w_buffer->b_closing)
|
||||
&& !(wp->w_closing || wp->w_buffer->b_locked > 0)
|
||||
#endif
|
||||
)
|
||||
{
|
||||
@@ -2148,7 +2148,7 @@ close_windows(
|
||||
for (wp = tp->tp_firstwin; wp != NULL; wp = wp->w_next)
|
||||
if (wp->w_buffer == buf
|
||||
#ifdef FEAT_AUTOCMD
|
||||
&& !(wp->w_closing || wp->w_buffer->b_closing)
|
||||
&& !(wp->w_closing || wp->w_buffer->b_locked > 0)
|
||||
#endif
|
||||
)
|
||||
{
|
||||
@@ -2287,7 +2287,8 @@ win_close(win_T *win, int free_buf)
|
||||
}
|
||||
|
||||
#ifdef FEAT_AUTOCMD
|
||||
if (win->w_closing || (win->w_buffer != NULL && win->w_buffer->b_closing))
|
||||
if (win->w_closing || (win->w_buffer != NULL
|
||||
&& win->w_buffer->b_locked > 0))
|
||||
return FAIL; /* window is already being closed */
|
||||
if (win == aucmd_win)
|
||||
{
|
||||
@@ -2503,7 +2504,8 @@ win_close_othertab(win_T *win, int free_buf, tabpage_T *tp)
|
||||
#ifdef FEAT_AUTOCMD
|
||||
/* Get here with win->w_buffer == NULL when win_close() detects the tab
|
||||
* page changed. */
|
||||
if (win->w_closing || (win->w_buffer != NULL && win->w_buffer->b_closing))
|
||||
if (win->w_closing || (win->w_buffer != NULL
|
||||
&& win->w_buffer->b_locked > 0))
|
||||
return; /* window is already being closed */
|
||||
#endif
|
||||
|
||||
|
Reference in New Issue
Block a user