commit 5191a11d66b925561b5f705aa42759a0e2a5624a
parent 90585e47feb7b4c4d878ad32480e2fc09744a7ed
Author: zeertzjq <zeertzjq@outlook.com>
Date: Sat, 14 Sep 2024 19:28:13 +0800
vim-patch:9.1.0730: Crash with cursor-screenline and narrow window
Problem: Crash with cursor-screenline and narrow window
(elig0n)
Solution: Don't set right_col when width2 is 0 (zeertzjq).
fixes: vim/vim#15677
closes: vim/vim#15678
https://github.com/vim/vim/commit/59149f02692804267e7cc0665d0334f6ff4675be
Diffstat:
2 files changed, 13 insertions(+), 3 deletions(-)
diff --git a/src/nvim/drawline.c b/src/nvim/drawline.c
@@ -189,7 +189,7 @@ static void margin_columns_win(win_T *wp, int *left_col, int *right_col)
*left_col = 0;
*right_col = width1;
- if (wp->w_virtcol >= (colnr_T)width1) {
+ if (wp->w_virtcol >= (colnr_T)width1 && width2 > 0) {
*right_col = width1 + ((wp->w_virtcol - width1) / width2 + 1) * width2;
}
if (wp->w_virtcol >= (colnr_T)width1 && width2 > 0) {
diff --git a/test/old/testdir/test_cursorline.vim b/test/old/testdir/test_cursorline.vim
@@ -300,7 +300,7 @@ func Test_cursorline_screenline_update()
set cursorline cursorlineopt=screenline
inoremap <F2> <Cmd>call cursor(1, 1)<CR>
END
- call writefile(lines, 'Xcul_screenline')
+ call writefile(lines, 'Xcul_screenline', 'D')
let buf = RunVimInTerminal('-S Xcul_screenline', #{rows: 8})
call term_sendkeys(buf, "A")
@@ -310,7 +310,17 @@ func Test_cursorline_screenline_update()
call term_sendkeys(buf, "\<Esc>")
call StopVimInTerminal(buf)
- call delete('Xcul_screenline')
+endfunc
+
+func Test_cursorline_screenline_zero_width()
+ CheckOption foldcolumn
+
+ set cursorline culopt=screenline winminwidth=1 foldcolumn=1
+ " This used to crash Vim
+ 1vnew | redraw
+
+ bwipe!
+ set cursorline& culopt& winminwidth& foldcolumn&
endfunc
func Test_cursorline_cursorbind_horizontal_scroll()