From de670f380914e71d16b3357b609bdd3d0d30d95b Mon Sep 17 00:00:00 2001 From: zeertzjq Date: Wed, 27 Oct 2021 17:34:45 +0800 Subject: fix(float): fix potential heap corruption in win_redr_border --- src/nvim/screen.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/nvim/screen.c b/src/nvim/screen.c index 16c81307ce..2cbd45e922 100644 --- a/src/nvim/screen.c +++ b/src/nvim/screen.c @@ -5655,7 +5655,9 @@ static void win_redr_border(win_T *wp) int ic = (i == 0 && !adj[3] && chars[6][0]) ? 6 : 5; grid_put_schar(grid, irow+adj[0], i+adj[3], chars[ic], attrs[ic]); } - grid_put_schar(grid, irow+adj[0], icol+adj[3], chars[4], attrs[4]); + if (adj[1]) { + grid_put_schar(grid, irow+adj[0], icol+adj[3], chars[4], attrs[4]); + } grid_puts_line_flush(false); } } -- cgit From 7ff1bc18a978d30f70db157be6f5fb2fb52b4215 Mon Sep 17 00:00:00 2001 From: zeertzjq Date: Wed, 27 Oct 2021 19:22:00 +0800 Subject: fix(float): redraw if w_border_adj changed --- src/nvim/window.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/nvim/window.c b/src/nvim/window.c index 4a21c2eee5..67bad9f8cf 100644 --- a/src/nvim/window.c +++ b/src/nvim/window.c @@ -725,8 +725,11 @@ void win_config_float(win_T *wp, FloatConfig fconfig) bool has_border = wp->w_floating && wp->w_float_config.border; for (int i = 0; i < 4; i++) { - wp->w_border_adj[i] = - has_border && wp->w_float_config.border_chars[2 * i+1][0]; + int new_adj = has_border && wp->w_float_config.border_chars[2 * i + 1][0]; + if (new_adj != wp->w_border_adj[i]) { + change_border = true; + wp->w_border_adj[i] = new_adj; + } } if (!ui_has(kUIMultigrid)) { -- cgit