summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorzeertzjq <zeertzjq@outlook.com>2023-09-24 23:16:08 +0200
committerChristian Brabandt <cb@256bit.org>2023-09-24 23:17:14 +0200
commit46bdae036ac4121e305fc3ed4ef3f9fc928dcb25 (patch)
treecf31879bd537495b93bd828efdab58940e5426dc
parentedcba96c0088210927558b0e2583f3b689f457c4 (diff)
patch 9.0.1934: :bwipe fails after switching window from aucmd_win.v9.0.1934
Problem: :bwipe fails after switching window from aucmd_win. Solution: Decrement b_nwindows after switching back to aucmd_win. closes: #13160 Signed-off-by: Christian Brabandt <cb@256bit.org> Co-authored-by: zeertzjq <zeertzjq@outlook.com>
-rw-r--r--src/autocmd.c3
-rw-r--r--src/testdir/test_autocmd.vim13
-rw-r--r--src/version.c2
3 files changed, 15 insertions, 3 deletions
diff --git a/src/autocmd.c b/src/autocmd.c
index 63e56735b5..c09e12f404 100644
--- a/src/autocmd.c
+++ b/src/autocmd.c
@@ -1635,7 +1635,6 @@ aucmd_restbuf(
{
win_T *awp = aucmd_win[aco->use_aucmd_win_idx].auc_win;
- --curbuf->b_nwindows;
// Find "awp", it can't be closed, but it may be in another tab
// page. Do not trigger autocommands here.
block_autocmds();
@@ -1656,8 +1655,8 @@ aucmd_restbuf(
}
}
win_found:
+ --curbuf->b_nwindows;
#ifdef FEAT_JOB_CHANNEL
- ;
int save_stop_insert_mode = stop_insert_mode;
// May need to stop Insert mode if we were in a prompt buffer.
leaving_window(curwin);
diff --git a/src/testdir/test_autocmd.vim b/src/testdir/test_autocmd.vim
index 1b9ecc94d1..419005aa6e 100644
--- a/src/testdir/test_autocmd.vim
+++ b/src/testdir/test_autocmd.vim
@@ -3630,11 +3630,22 @@ func Test_closing_autocmd_window()
END
call v9.CheckScriptFailure(lines, 'E814:')
au! BufEnter
- only!
bwipe Xa.txt
bwipe Xb.txt
endfunc
+func Test_switch_window_in_autocmd_window()
+ edit Xa.txt
+ tabnew Xb.txt
+ autocmd BufEnter Xa.txt wincmd w
+ doautoall BufEnter
+ au! BufEnter
+ bwipe Xa.txt
+ call assert_false(bufexists('Xa.txt'))
+ bwipe Xb.txt
+ call assert_false(bufexists('Xb.txt'))
+endfunc
+
func Test_bufwipeout_changes_window()
" This should not crash, but we don't have any expectations about what
" happens, changing window in BufWipeout has unpredictable results.
diff --git a/src/version.c b/src/version.c
index 31c1727007..68afda20a1 100644
--- a/src/version.c
+++ b/src/version.c
@@ -700,6 +700,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 1934,
+/**/
1933,
/**/
1932,