mirror of
https://github.com/neovim/neovim.git
synced 2026-02-20 01:09:56 +10:00
fix(column): clamp line number for legacy signs
Problem: Legacy :sign API still allows placing signs beyond the end of
the buffer. This is unaccounted for by the signcolumn tracking
logic and is disallowed in general for the extmark API which
implements it now.
Solution: Clamp legacy sign line number to the length of the buffer.
This commit is contained in:
@@ -577,4 +577,34 @@ describe('Signs', function()
|
||||
]])
|
||||
eq({}, eval('sign_getdefined()'))
|
||||
end)
|
||||
|
||||
it('no crash when unplacing signs beyond end of buffer', function()
|
||||
exec([[
|
||||
sign define S1 text=S1
|
||||
sign define S2 text=S2
|
||||
sign place 1 line=8 name=S1
|
||||
sign place 2 line=9 name=S2
|
||||
]])
|
||||
-- Now placed at end of buffer
|
||||
local s1 = {
|
||||
grid = [[
|
||||
S2^ |
|
||||
{0:~ }|*12
|
||||
|
|
||||
]],
|
||||
}
|
||||
screen:expect(s1)
|
||||
-- Signcolumn tracking used to not count signs placed beyond end of buffer here
|
||||
exec('set signcolumn=auto:9')
|
||||
screen:expect({
|
||||
grid = [[
|
||||
S2S1^ |
|
||||
{0:~ }|*12
|
||||
|
|
||||
]],
|
||||
})
|
||||
-- Unplacing the sign does not crash by decrementing tracked signs below zero
|
||||
exec('sign unplace 1')
|
||||
screen:expect(s1)
|
||||
end)
|
||||
end)
|
||||
|
||||
Reference in New Issue
Block a user