]> git.ipfire.org Git - thirdparty/vim.git/commitdiff
patch 9.0.1934: :bwipe fails after switching window from aucmd_win. v9.0.1934
authorzeertzjq <zeertzjq@outlook.com>
Sun, 24 Sep 2023 21:16:08 +0000 (23:16 +0200)
committerChristian Brabandt <cb@256bit.org>
Sun, 24 Sep 2023 21:17:14 +0000 (23:17 +0200)
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>
src/autocmd.c
src/testdir/test_autocmd.vim
src/version.c

index 63e56735b5fea6802b25b91182775a4ef1f36b02..c09e12f40429f062bee0de236d9fc5285955ce18 100644 (file)
@@ -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);
index 1b9ecc94d15039c408d6fc675a7afee9db4e03c4..419005aa6eceabfe56cf7cd0db40277821a446a0 100644 (file)
@@ -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.
index 31c17270070b099314219de46abebc5406e56bab..68afda20a10f5e0b3af2e5f19a218476b753ba1a 100644 (file)
@@ -699,6 +699,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    1934,
 /**/
     1933,
 /**/