summaryrefslogtreecommitdiff
path: root/src/window.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/window.c')
-rw-r--r--src/window.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/src/window.c b/src/window.c
index e37450d98..b5d4afd2b 100644
--- a/src/window.c
+++ b/src/window.c
@@ -2276,9 +2276,15 @@ win_close(win, free_buf)
#endif
}
+ if (only_one_window() && win_valid(win) && win->w_buffer == NULL
+ && (last_window() || curtab != prev_curtab
+ || close_last_window_tabpage(win, free_buf, prev_curtab)))
+ /* Autocommands have close all windows, quit now. */
+ getout(0);
+
/* Autocommands may have closed the window already, or closed the only
* other window or moved to another tab page. */
- if (!win_valid(win) || last_window() || curtab != prev_curtab
+ else if (!win_valid(win) || last_window() || curtab != prev_curtab
|| close_last_window_tabpage(win, free_buf, prev_curtab))
return;
@@ -6282,7 +6288,8 @@ only_one_window()
return FALSE;
for (wp = firstwin; wp != NULL; wp = wp->w_next)
- if ((!((wp->w_buffer->b_help && !curbuf->b_help)
+ if (wp->w_buffer != NULL
+ && (!((wp->w_buffer->b_help && !curbuf->b_help)
# ifdef FEAT_QUICKFIX
|| wp->w_p_pvw
# endif