57 lines
1.8 KiB
Diff
57 lines
1.8 KiB
Diff
From 59149f02692804267e7cc0665d0334f6ff4675be Mon Sep 17 00:00:00 2001
|
|
From: zeertzjq <zeertzjq@outlook.com>
|
|
Date: Sat, 14 Sep 2024 10:40:29 +0200
|
|
Subject: [PATCH] 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: #15677
|
|
closes: #15678
|
|
|
|
Signed-off-by: zeertzjq <zeertzjq@outlook.com>
|
|
Signed-off-by: Christian Brabandt <cb@256bit.org>
|
|
---
|
|
src/drawline.c | 2 +-
|
|
src/testdir/test_cursorline.vim | 11 +++++++++++
|
|
2 files changed, 12 insertions(+), 1 deletion(-)
|
|
|
|
diff --git a/src/drawline.c b/src/drawline.c
|
|
index b627192a4ee0f..fd5d56b43e508 100644
|
|
--- a/src/drawline.c
|
|
+++ b/src/drawline.c
|
|
@@ -62,7 +62,7 @@ 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)
|
|
*left_col = (wp->w_virtcol - width1) / width2 * width2 + width1;
|
|
diff --git a/src/testdir/test_cursorline.vim b/src/testdir/test_cursorline.vim
|
|
index bdde670d207a5..d258111ae4de1 100644
|
|
--- a/src/testdir/test_cursorline.vim
|
|
+++ b/src/testdir/test_cursorline.vim
|
|
@@ -309,6 +309,17 @@ func Test_cursorline_screenline_update()
|
|
call StopVimInTerminal(buf)
|
|
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()
|
|
CheckScreendump
|
|
|
|
|