Skip to content

Commit a360730

Browse files
committed
updated for version 7.4.118
Problem: It's possible that redrawing the status lines causes win_redr_custom() to be called recursively. Solution: Protect against recursiveness. (Yasuhiro Matsumoto)
1 parent f1d3374 commit a360730

File tree

2 files changed

+14
-1
lines changed

2 files changed

+14
-1
lines changed

src/screen.c

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6653,6 +6653,7 @@ win_redr_custom(wp, draw_ruler)
66536653
win_T *wp;
66546654
int draw_ruler; /* TRUE or FALSE */
66556655
{
6656+
static int entered = FALSE;
66566657
int attr;
66576658
int curattr;
66586659
int row;
@@ -6671,6 +6672,13 @@ win_redr_custom(wp, draw_ruler)
66716672
win_T *ewp;
66726673
int p_crb_save;
66736674

6675+
/* There is a tiny chance that this gets called recursively: When
6676+
* redrawing a status line triggers redrawing the ruler or tabline.
6677+
* Avoid trouble by not allowing recursion. */
6678+
if (entered)
6679+
return;
6680+
entered = TRUE;
6681+
66746682
/* setup environment for the task at hand */
66756683
if (wp == NULL)
66766684
{
@@ -6746,7 +6754,7 @@ win_redr_custom(wp, draw_ruler)
67466754
}
67476755

67486756
if (maxwidth <= 0)
6749-
return;
6757+
goto theend;
67506758

67516759
/* Temporarily reset 'cursorbind', we don't want a side effect from moving
67526760
* the cursor away and back. */
@@ -6827,6 +6835,9 @@ win_redr_custom(wp, draw_ruler)
68276835
while (col < Columns)
68286836
TabPageIdxs[col++] = fillchar;
68296837
}
6838+
6839+
theend:
6840+
entered = FALSE;
68306841
}
68316842

68326843
#endif /* FEAT_STL_OPT */

src/version.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -738,6 +738,8 @@ static char *(features[]) =
738738

739739
static int included_patches[] =
740740
{ /* Add new patch number below this line */
741+
/**/
742+
118,
741743
/**/
742744
117,
743745
/**/

0 commit comments

Comments
 (0)