screen.c: add update_window_hl to special redrawing entrypoints

The following (run as a script) used to cause a crash due to :sign using a
special redraw (not updating nvim's specific highlight data structures)
without proper redraw first, as split just flags for redraw later.

set cursorline
sign define piet text=>> texthl=Search
split
sign place 3 line=2 name=piet buffer=1
This commit is contained in:
Björn Linse
2018-07-26 20:34:13 +02:00
parent 5f15788dc3
commit 9a584773b5
2 changed files with 35 additions and 0 deletions

View File

@@ -507,6 +507,7 @@ void update_single_line(win_T *wp, linenr_T lnum)
init_search_hl(wp);
start_search_hl();
prepare_search_hl(wp, lnum);
update_window_hl(wp, false);
win_line(wp, lnum, row, row + wp->w_lines[j].wl_size, false);
end_search_hl();
break;
@@ -579,6 +580,7 @@ void update_debug_sign(buf_T *buf, linenr_T lnum)
FOR_ALL_WINDOWS_IN_TAB(wp, curtab) {
if (wp->w_redr_type != 0) {
update_window_hl(wp, wp->w_redr_type >= NOT_VALID);
win_update(wp);
}
if (wp->w_redr_status) {