changeset 23744:fc031340f8f9 v8.2.2413

patch 8.2.2413: crash when using :all while using a cmdline window Commit: https://github.com/vim/vim/commit/bb4b93ed85726c3921596ca267f531c8c94d819a Author: Bram Moolenaar <Bram@vim.org> Date: Tue Jan 26 21:35:08 2021 +0100 patch 8.2.2413: crash when using :all while using a cmdline window Problem: Crash when using :all while using a cmdline window. (Zdenek Dohnal) Solution: Disallow :all from the cmdline window.
author Bram Moolenaar <Bram@vim.org>
date Tue, 26 Jan 2021 21:45:04 +0100
parents 27e3718c6836
children d4166802a11e
files src/arglist.c src/ex_getln.c src/testdir/test_arglist.vim src/version.c
diffstat 4 files changed, 20 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/src/arglist.c
+++ b/src/arglist.c
@@ -884,6 +884,13 @@ do_arg_all(
     win_T	*new_curwin = NULL;
     tabpage_T	*new_curtab = NULL;
 
+#ifdef FEAT_CMDWIN
+    if (cmdwin_type != 0)
+    {
+	emsg(_(e_cmdwin));
+	return;
+    }
+#endif
     if (ARGCOUNT <= 0)
     {
 	// Don't give an error message.  We don't want it when the ":all"
--- a/src/ex_getln.c
+++ b/src/ex_getln.c
@@ -4205,6 +4205,9 @@ open_cmdwin(void)
     // Don't let quitting the More prompt make this fail.
     got_int = FALSE;
 
+    // Set "cmdwin_type" before any autocommands may mess things up.
+    cmdwin_type = get_cmdline_type();
+
     // Create the command-line buffer empty.
     if (do_ecmd(0, NULL, NULL, NULL, ECMD_ONE, ECMD_HIDE, NULL) == FAIL)
     {
@@ -4213,7 +4216,6 @@ open_cmdwin(void)
 	ga_clear(&winsizes);
 	return Ctrl_C;
     }
-    cmdwin_type = get_cmdline_type();
 
     apply_autocmds(EVENT_BUFFILEPRE, NULL, NULL, FALSE, curbuf);
     (void)setfname(curbuf, (char_u *)"[Command Line]", NULL, TRUE);
--- a/src/testdir/test_arglist.vim
+++ b/src/testdir/test_arglist.vim
@@ -559,4 +559,12 @@ func Test_quit_with_arglist()
   call delete('.c.swp')
 endfunc
 
+" Test for ":all" not working when in the cmdline window
+func Test_all_not_allowed_from_cmdwin()
+  au BufEnter * all
+  next x
+  call assert_fails(":norm 7q?x\<CR>", 'E11:')
+  au! BufEnter
+endfunc
+
 " vim: shiftwidth=2 sts=2 expandtab
--- a/src/version.c
+++ b/src/version.c
@@ -751,6 +751,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    2413,
+/**/
     2412,
 /**/
     2411,