mirror of
https://github.com/neovim/neovim.git
synced 2025-02-25 18:55:25 -06: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
|
// Autocommands may delete the tab page under our fingers and we may
|
||||||
// fail to close a window with a modified buffer.
|
// 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;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -3,8 +3,10 @@ local helpers = require('test.functional.helpers')(after_each)
|
|||||||
local clear = helpers.clear
|
local clear = helpers.clear
|
||||||
local command = helpers.command
|
local command = helpers.command
|
||||||
local eq = helpers.eq
|
local eq = helpers.eq
|
||||||
|
local neq = helpers.neq
|
||||||
local feed = helpers.feed
|
local feed = helpers.feed
|
||||||
local eval = helpers.eval
|
local eval = helpers.eval
|
||||||
|
local exec = helpers.exec
|
||||||
|
|
||||||
describe('tabpage', function()
|
describe('tabpage', function()
|
||||||
before_each(clear)
|
before_each(clear)
|
||||||
@ -34,5 +36,20 @@ describe('tabpage', function()
|
|||||||
|
|
||||||
eq(3, eval('tabpagenr()'))
|
eq(3, eval('tabpagenr()'))
|
||||||
end)
|
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)
|
end)
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user