diff src/ex_getln.c @ 20717:abebcc20af26 v8.2.0911

patch 8.2.0911: crash when opening a buffer for the cmdline window fails Commit: https://github.com/vim/vim/commit/9b7cce28d568f0622d77c6c9878c2d4770c3b164 Author: Bram Moolenaar <Bram@vim.org> Date: Sat Jun 6 15:14:08 2020 +0200 patch 8.2.0911: crash when opening a buffer for the cmdline window fails Problem: Crash when opening a buffer for the cmdline window fails. (Chris Barber) Solution: Check do_ecmd() succeeds. Reset got_int if "q" was used at the more prompt. (closes #6211)
author Bram Moolenaar <Bram@vim.org>
date Sat, 06 Jun 2020 15:15:03 +0200
parents 06a1dd50463e
children e3078150144d
line wrap: on
line diff
--- a/src/ex_getln.c
+++ b/src/ex_getln.c
@@ -682,7 +682,8 @@ may_add_char_to_search(int firstc, int *
     // NOTE: must call restore_last_search_pattern() before returning!
     save_last_search_pattern();
 
-    if (!do_incsearch_highlighting(firstc, &search_delim, is_state, &skiplen, &patlen))
+    if (!do_incsearch_highlighting(firstc, &search_delim, is_state,
+							    &skiplen, &patlen))
     {
 	restore_last_search_pattern();
 	return FAIL;
@@ -4205,10 +4206,19 @@ open_cmdwin(void)
 	ga_clear(&winsizes);
 	return K_IGNORE;
     }
-    cmdwin_type = get_cmdline_type();
+    // Don't let quitting the More prompt make this fail.
+    got_int = FALSE;
 
     // Create the command-line buffer empty.
-    (void)do_ecmd(0, NULL, NULL, NULL, ECMD_ONE, ECMD_HIDE, NULL);
+    if (do_ecmd(0, NULL, NULL, NULL, ECMD_ONE, ECMD_HIDE, NULL) == FAIL)
+    {
+	// Some autocommand messed it up?
+	win_close(curwin, TRUE);
+	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);
     apply_autocmds(EVENT_BUFFILEPOST, NULL, NULL, FALSE, curbuf);