fix(window): crash on negative window height with 'winbar' #33250

Problem:  Negative window and grid height with 'winbar'.
Solution: Clamp the height when subtracting the 'winbar' height.
This commit is contained in:
luukvbaal
2025-04-01 14:02:24 +02:00
committed by GitHub
parent ec6670080a
commit 0e7479bb76
2 changed files with 10 additions and 1 deletions

View File

@@ -6634,7 +6634,7 @@ void win_set_inner_size(win_T *wp, bool valid_cursor)
int prev_height = wp->w_height_inner;
int height = wp->w_height_request;
if (height == 0) {
height = wp->w_height - wp->w_winbar_height;
height = MAX(0, wp->w_height - wp->w_winbar_height);
}
if (height != prev_height) {

View File

@@ -540,6 +540,15 @@ describe('winbar', function()
]])
eq('Vim(set):E36: Not enough room', pcall_err(command, 'set winbar=test'))
end)
it('does not crash due to negative grid height #33176', function()
screen:try_resize(screen._width, 20)
command('botright split | belowright vsplit | 2wincmd w')
api.nvim_set_option_value('winfixheight', true, { scope = 'local', win = 0 })
api.nvim_win_set_height(0, 8)
feed('q:')
n.assert_alive()
end)
end)
describe('local winbar with tabs', function()