Mercurial > vim
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