fix(extmarks): crash with sign after many marks

fixes #27137
This commit is contained in:
bfredl 2024-01-23 09:16:04 +01:00
parent dc466f9a63
commit 54225bdb02
2 changed files with 19 additions and 1 deletions

View File

@ -1576,7 +1576,9 @@ bool marktree_itr_step_out_filter(MarkTree *b, MarkTreeIter *itr, MetaFilter met
}
itr->i = itr->x->n;
marktree_itr_next(b, itr); // no filter, just reuse the code for step to parent
// no filter needed, just reuse the code path for step to parent
marktree_itr_next_skip(b, itr, true, false, NULL, NULL);
}
return itr->x;

View File

@ -4548,6 +4548,7 @@ describe('decorations: signs', function()
[1] = {foreground = Screen.colors.Blue4, background = Screen.colors.Grey};
[2] = {foreground = Screen.colors.Blue1, bold = true};
[3] = {background = Screen.colors.Yellow1, foreground = Screen.colors.Blue1};
[4] = {foreground = Screen.colors.Gray100, background = Screen.colors.Red};
}
ns = api.nvim_create_namespace 'test'
@ -5021,6 +5022,21 @@ l5
|
]]}
end)
it('no crash with sign after many marks #27137', function()
screen:try_resize(20, 4)
insert('a')
for _ = 0, 104 do
api.nvim_buf_set_extmark(0, ns, 0, 0, {hl_group = 'Error', end_col = 1})
end
api.nvim_buf_set_extmark(0, ns, 0, 0, {sign_text = 'S1'})
screen:expect{grid=[[
S1{4:^a} |
{2:~ }|*2
|
]]}
end)
end)
describe('decorations: virt_text', function()