0
0
mirror of https://github.com/vim/vim.git synced 2025-09-25 03:54:15 -04:00

updated for version 7.3.306

Problem:    When closing a window there is a chance that deleting a scrollbar
            triggers a GUI resize, which uses the window while it is not in a
            valid state.
Solution:   Set the buffer pointer to NULL to be able to detect the invalid
            situation.  Fix a few places that used the buffer pointer
            incorrectly.
This commit is contained in:
Bram Moolenaar
2011-09-14 14:43:25 +02:00
parent 52af96527c
commit a971b82b16
5 changed files with 39 additions and 15 deletions

View File

@@ -1226,15 +1226,15 @@ win_init(newp, oldp, flags)
}
newp->w_tagstackidx = oldp->w_tagstackidx;
newp->w_tagstacklen = oldp->w_tagstacklen;
# ifdef FEAT_FOLDING
#ifdef FEAT_FOLDING
copyFoldingState(oldp, newp);
# endif
#endif
win_init_some(newp, oldp);
# ifdef FEAT_SYN_HL
#ifdef FEAT_SYN_HL
check_colorcolumn(newp);
# endif
#endif
}
/*
@@ -2212,6 +2212,11 @@ win_close(win, free_buf)
out_flush();
#endif
#ifdef FEAT_SYN_HL
/* Free independent synblock before the buffer is freed. */
reset_synblock(win);
#endif
/*
* Close the link to the buffer.
*/
@@ -2222,7 +2227,8 @@ win_close(win, free_buf)
if (!win_valid(win) || last_window() || curtab != prev_curtab)
return;
/* Free the memory used for the window. */
/* Free the memory used for the window and get the window that received
* the screen space. */
wp = win_free_mem(win, &dir, NULL);
/* Make sure curwin isn't invalid. It can cause severe trouble when
@@ -3247,6 +3253,9 @@ win_init_empty(wp)
else
wp->w_farsi = W_CONV;
#endif
#ifdef FEAT_SYN_HL
wp->w_s = &wp->w_buffer->b_s;
#endif
}
/*
@@ -4437,7 +4446,6 @@ win_free(wp, tp)
#endif /* FEAT_GUI */
#ifdef FEAT_SYN_HL
reset_synblock(wp); /* free independent synblock */
vim_free(wp->w_p_cc_cols);
#endif