patch 9.1.1916: WinEnter autocommand confuses Vim when closing tabpage
Commit:
https://github.com/vim/vim/commit/61b73b89a3114b4bf62ffbedc8d0d3aa321bdcd5
Author: Christian Brabandt <[email protected]>
Date: Sat Nov 15 17:30:58 2025 +0000
patch 9.1.1916: WinEnter autocommand confuses Vim when closing tabpage
Problem: WinEnter autocommand may confuse Vim when closing tabpage
(hokorobi)
Solution: Verify that curwin did not change in close_others()
fixes: #18722
closes: #18733
Signed-off-by: Christian Brabandt <[email protected]>
diff --git a/src/testdir/test_autocmd.vim b/src/testdir/test_autocmd.vim
index 6957c2a9b..96b076b5e 100644
--- a/src/testdir/test_autocmd.vim
+++ b/src/testdir/test_autocmd.vim
@@ -5537,4 +5537,27 @@ func Test_VimResized_and_window_width_not_equalized()
call StopVimInTerminal(buf)
endfunc
+func Test_win_tabclose_autocmd()
+
+ defer CleanUpTestAuGroup()
+ new
+ augroup testing
+ au WinClosed * wincmd p
+ augroup END
+
+ tabnew
+ new
+ new
+
+ call assert_equal(2, tabpagenr('$'))
+ try
+ tabclose
+ catch
+ " should not happen
+ call assert_report("closing tabpage failed")
+ endtry
+ call assert_equal(1, tabpagenr('$'))
+ bw!
+endfunc
+
" vim: shiftwidth=2 sts=2 expandtab
diff --git a/src/version.c b/src/version.c
index f501001bb..df95ec506 100644
--- a/src/version.c
+++ b/src/version.c
@@ -729,6 +729,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
+/**/
+ 1916,
/**/
1915,
/**/
diff --git a/src/window.c b/src/window.c
index 7ff228280..28c68800c 100644
--- a/src/window.c
+++ b/src/window.c
@@ -4403,6 +4403,7 @@ close_others(
{
win_T *wp;
win_T *nextwp;
+ win_T *old_curwin = curwin;
int r;
if (one_window())
@@ -4416,6 +4417,14 @@ close_others(
for (wp = firstwin; win_valid(wp); wp = nextwp)
{
nextwp = wp->w_next;
+
+ // autocommands messed this one up
+ if (old_curwin != curwin && win_valid(old_curwin))
+ {
+ curwin = old_curwin;
+ curbuf = curwin->w_buffer;
+ }
+
if (wp == curwin) // don't close current window
continue;
--
--
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php
---
You received this message because you are subscribed to the Google Groups
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion visit
https://groups.google.com/d/msgid/vim_dev/E1vKKKe-004wz3-54%40256bit.org.