mirror of
https://github.com/vim/vim.git
synced 2025-09-29 04:34:16 -04:00
patch 8.0.0274: possible recursive screen updating causes trouble
Problem: When update_single_line() is called recursively, or another screen update happens while it is busy, errors may occur. Solution: Check and update updating_screen. (Christian Brabandt)
This commit is contained in:
@@ -824,8 +824,9 @@ update_single_line(win_T *wp, linenr_T lnum)
|
||||
int j;
|
||||
|
||||
/* Don't do anything if the screen structures are (not yet) valid. */
|
||||
if (!screen_valid(TRUE))
|
||||
if (!screen_valid(TRUE) || updating_screen)
|
||||
return;
|
||||
updating_screen = TRUE;
|
||||
|
||||
if (lnum >= wp->w_topline && lnum < wp->w_botline
|
||||
&& foldedCount(wp, lnum, &win_foldinfo) == 0)
|
||||
@@ -865,13 +866,11 @@ update_single_line(win_T *wp, linenr_T lnum)
|
||||
# endif
|
||||
}
|
||||
need_cursor_line_redraw = FALSE;
|
||||
updating_screen = FALSE;
|
||||
}
|
||||
#endif
|
||||
|
||||
#if defined(FEAT_SIGNS) || defined(FEAT_GUI)
|
||||
static void update_prepare(void);
|
||||
static void update_finish(void);
|
||||
|
||||
/*
|
||||
* Prepare for updating one or more windows.
|
||||
* Caller must check for "updating_screen" already set to avoid recursiveness.
|
||||
|
@@ -764,6 +764,8 @@ static char *(features[]) =
|
||||
|
||||
static int included_patches[] =
|
||||
{ /* Add new patch number below this line */
|
||||
/**/
|
||||
274,
|
||||
/**/
|
||||
273,
|
||||
/**/
|
||||
|
Reference in New Issue
Block a user