neovim

Neovim text editor
git clone https://git.dasho.dev/neovim.git
Log | Files | Refs | README

commit 0e7479bb7637a21121b990cc960262a0d60196da
parent ec6670080a71835a54e28a0f5489b0fad5f4e531
Author: luukvbaal <luukvbaal@gmail.com>
Date:   Tue,  1 Apr 2025 14:02:24 +0200

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.
Diffstat:
Msrc/nvim/window.c | 2+-
Mtest/functional/ui/winbar_spec.lua | 9+++++++++
2 files changed, 10 insertions(+), 1 deletion(-)

diff --git a/src/nvim/window.c b/src/nvim/window.c @@ -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) { diff --git a/test/functional/ui/winbar_spec.lua b/test/functional/ui/winbar_spec.lua @@ -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()