0
0
mirror of https://github.com/vim/vim.git synced 2025-09-27 04:14:06 -04:00

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.
This commit is contained in:
Bram Moolenaar
2021-01-26 21:35:08 +01:00
parent ce0370d9e6
commit bb4b93ed85
4 changed files with 20 additions and 1 deletions

View File

@@ -884,6 +884,13 @@ do_arg_all(
win_T *new_curwin = NULL; win_T *new_curwin = NULL;
tabpage_T *new_curtab = NULL; tabpage_T *new_curtab = NULL;
#ifdef FEAT_CMDWIN
if (cmdwin_type != 0)
{
emsg(_(e_cmdwin));
return;
}
#endif
if (ARGCOUNT <= 0) if (ARGCOUNT <= 0)
{ {
// Don't give an error message. We don't want it when the ":all" // Don't give an error message. We don't want it when the ":all"

View File

@@ -4205,6 +4205,9 @@ open_cmdwin(void)
// Don't let quitting the More prompt make this fail. // Don't let quitting the More prompt make this fail.
got_int = FALSE; got_int = FALSE;
// Set "cmdwin_type" before any autocommands may mess things up.
cmdwin_type = get_cmdline_type();
// Create the command-line buffer empty. // Create the command-line buffer empty.
if (do_ecmd(0, NULL, NULL, NULL, ECMD_ONE, ECMD_HIDE, NULL) == FAIL) if (do_ecmd(0, NULL, NULL, NULL, ECMD_ONE, ECMD_HIDE, NULL) == FAIL)
{ {
@@ -4213,7 +4216,6 @@ open_cmdwin(void)
ga_clear(&winsizes); ga_clear(&winsizes);
return Ctrl_C; return Ctrl_C;
} }
cmdwin_type = get_cmdline_type();
apply_autocmds(EVENT_BUFFILEPRE, NULL, NULL, FALSE, curbuf); apply_autocmds(EVENT_BUFFILEPRE, NULL, NULL, FALSE, curbuf);
(void)setfname(curbuf, (char_u *)"[Command Line]", NULL, TRUE); (void)setfname(curbuf, (char_u *)"[Command Line]", NULL, TRUE);

View File

@@ -559,4 +559,12 @@ func Test_quit_with_arglist()
call delete('.c.swp') call delete('.c.swp')
endfunc 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 " vim: shiftwidth=2 sts=2 expandtab

View File

@@ -750,6 +750,8 @@ static char *(features[]) =
static int included_patches[] = static int included_patches[] =
{ /* Add new patch number below this line */ { /* Add new patch number below this line */
/**/
2413,
/**/ /**/
2412, 2412,
/**/ /**/