From 5191a11d66b925561b5f705aa42759a0e2a5624a Mon Sep 17 00:00:00 2001 From: zeertzjq Date: Sat, 14 Sep 2024 19:28:13 +0800 Subject: [PATCH] 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 --- src/nvim/drawline.c | 2 +- test/old/testdir/test_cursorline.vim | 14 ++++++++++++-- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/src/nvim/drawline.c b/src/nvim/drawline.c index c85b9d2288..3b88dd2e90 100644 --- 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 index d9c77c0b36..2c375f20c0 100644 --- 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 call cursor(1, 1) 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, "\") 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()