0
0
mirror of https://github.com/vim/vim.git synced 2025-09-29 04:34:16 -04:00

patch 9.1.0406: Divide by zero with getmousepos() and 'smoothscroll'

Problem:  Divide by zero with getmousepos() and 'smoothscroll'.
Solution: Don't compute skip_lines when width1 is zero.
          (zeertzjq)

closes: #14747

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
This commit is contained in:
zeertzjq
2024-05-11 11:23:37 +02:00
committed by Christian Brabandt
parent 1c5728e0c4
commit 031a745608
4 changed files with 87 additions and 10 deletions

View File

@@ -3697,6 +3697,73 @@ func Test_getmousepos()
\ column: 8,
\ coladd: 21,
\ }, getmousepos())
30vnew
setlocal smoothscroll number
call setline(1, join(range(100)))
exe "normal! \<C-E>"
call test_setmouse(1, 5)
call assert_equal(#{
\ screenrow: 1,
\ screencol: 5,
\ winid: win_getid(),
\ winrow: 1,
\ wincol: 5,
\ line: 1,
\ column: 27,
\ coladd: 0,
\ }, getmousepos())
call test_setmouse(2, 5)
call assert_equal(#{
\ screenrow: 2,
\ screencol: 5,
\ winid: win_getid(),
\ winrow: 2,
\ wincol: 5,
\ line: 1,
\ column: 53,
\ coladd: 0,
\ }, getmousepos())
exe "normal! \<C-E>"
call test_setmouse(1, 5)
call assert_equal(#{
\ screenrow: 1,
\ screencol: 5,
\ winid: win_getid(),
\ winrow: 1,
\ wincol: 5,
\ line: 1,
\ column: 53,
\ coladd: 0,
\ }, getmousepos())
call test_setmouse(2, 5)
call assert_equal(#{
\ screenrow: 2,
\ screencol: 5,
\ winid: win_getid(),
\ winrow: 2,
\ wincol: 5,
\ line: 1,
\ column: 79,
\ coladd: 0,
\ }, getmousepos())
vert resize 4
call test_setmouse(2, 2)
" This used to crash Vim
call assert_equal(#{
\ screenrow: 2,
\ screencol: 2,
\ winid: win_getid(),
\ winrow: 2,
\ wincol: 2,
\ line: 1,
\ column: 53,
\ coladd: 0,
\ }, getmousepos())
bwipe!
bwipe!
endfunc