mirror of
https://github.com/neovim/neovim.git
synced 2024-12-24 05:05:00 -07:00
fix(tabpage): correct check for failure to close window
Avoid closing window 999 times.
This commit is contained in:
parent
f4f18a9833
commit
ae0a43ec23
@ -6839,7 +6839,7 @@ void tabpage_close_other(tabpage_T *tp, int forceit)
|
||||
|
||||
// Autocommands may delete the tab page under our fingers and we may
|
||||
// fail to close a window with a modified buffer.
|
||||
if (!valid_tabpage(tp) || tp->tp_firstwin == wp) {
|
||||
if (!valid_tabpage(tp) || tp->tp_lastwin == wp) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -3,8 +3,10 @@ local helpers = require('test.functional.helpers')(after_each)
|
||||
local clear = helpers.clear
|
||||
local command = helpers.command
|
||||
local eq = helpers.eq
|
||||
local neq = helpers.neq
|
||||
local feed = helpers.feed
|
||||
local eval = helpers.eval
|
||||
local exec = helpers.exec
|
||||
|
||||
describe('tabpage', function()
|
||||
before_each(clear)
|
||||
@ -34,5 +36,20 @@ describe('tabpage', function()
|
||||
|
||||
eq(3, eval('tabpagenr()'))
|
||||
end)
|
||||
|
||||
it('does not crash or loop 999 times if BufWipeout autocommand switches window #17868', function()
|
||||
exec([[
|
||||
tabedit
|
||||
let s:window_id = win_getid()
|
||||
botright new
|
||||
setlocal bufhidden=wipe
|
||||
let g:win_closed = 0
|
||||
autocmd WinClosed * let g:win_closed += 1
|
||||
autocmd BufWipeout <buffer> call win_gotoid(s:window_id)
|
||||
tabprevious
|
||||
+tabclose
|
||||
]])
|
||||
neq(999, eval('g:win_closed'))
|
||||
end)
|
||||
end)
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user