1
0
forked from aniani/vim

updated for version 7.3.765

Problem:    Segfault when doing "cclose" on BufUnload in a python function.
            (Sean Reifschneider)
Solution:   Skip window with NULL buffer. (Christian Brabandt)
This commit is contained in:
Bram Moolenaar
2013-01-17 14:00:11 +01:00
parent c4fba6f881
commit 802418d5eb
3 changed files with 14 additions and 2 deletions

View File

@@ -1376,6 +1376,9 @@ getout(exitval)
for (wp = (tp == curtab) for (wp = (tp == curtab)
? firstwin : tp->tp_firstwin; wp != NULL; wp = wp->w_next) ? firstwin : tp->tp_firstwin; wp != NULL; wp = wp->w_next)
{ {
if (wp->w_buffer == NULL)
/* Autocmd must have close the buffer already, skip. */
continue;
buf = wp->w_buffer; buf = wp->w_buffer;
if (buf->b_changedtick != -1) if (buf->b_changedtick != -1)
{ {

View File

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

View File

@@ -2276,9 +2276,15 @@ win_close(win, free_buf)
#endif #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 /* Autocommands may have closed the window already, or closed the only
* other window or moved to another tab page. */ * 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)) || close_last_window_tabpage(win, free_buf, prev_curtab))
return; return;
@@ -6282,7 +6288,8 @@ only_one_window()
return FALSE; return FALSE;
for (wp = firstwin; wp != NULL; wp = wp->w_next) 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 # ifdef FEAT_QUICKFIX
|| wp->w_p_pvw || wp->w_p_pvw
# endif # endif