aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/buffer.c
diff options
context:
space:
mode:
authorzeertzjq <zeertzjq@outlook.com>2022-08-25 19:35:17 +0800
committerzeertzjq <zeertzjq@outlook.com>2022-08-25 21:38:11 +0800
commit4ecea0e001533d68f3032fe0512fc55360f295c0 (patch)
tree1c1fdd54a6a2bdd7240e22cc455ab45b7db1160a /src/nvim/buffer.c
parent99f8d34c8a7128a9adb43168ca5364ccbd568333 (diff)
downloadrneovim-4ecea0e001533d68f3032fe0512fc55360f295c0.tar.gz
rneovim-4ecea0e001533d68f3032fe0512fc55360f295c0.tar.bz2
rneovim-4ecea0e001533d68f3032fe0512fc55360f295c0.zip
vim-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 vim/vim#6211) https://github.com/vim/vim/commit/9b7cce28d568f0622d77c6c9878c2d4770c3b164 Make code match latest Vim instead.
Diffstat (limited to 'src/nvim/buffer.c')
-rw-r--r--src/nvim/buffer.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/src/nvim/buffer.c b/src/nvim/buffer.c
index d0afaebad9..03b4c1bae8 100644
--- a/src/nvim/buffer.c
+++ b/src/nvim/buffer.c
@@ -4184,9 +4184,13 @@ void wipe_buffer(buf_T *buf, bool aucmd)
/// @param bufnr Buffer to switch to, or 0 to create a new buffer.
///
/// @see curbufIsChanged()
-void buf_open_scratch(handle_T bufnr, char *bufname)
+///
+/// @return FAIL for failure, OK otherwise
+int buf_open_scratch(handle_T bufnr, char *bufname)
{
- (void)do_ecmd((int)bufnr, NULL, NULL, NULL, ECMD_ONE, ECMD_HIDE, NULL);
+ if (do_ecmd((int)bufnr, NULL, NULL, NULL, ECMD_ONE, ECMD_HIDE, NULL) == FAIL) {
+ return FAIL;
+ }
apply_autocmds(EVENT_BUFFILEPRE, NULL, NULL, false, curbuf);
(void)setfname(curbuf, bufname, NULL, true);
apply_autocmds(EVENT_BUFFILEPOST, NULL, NULL, false, curbuf);
@@ -4194,4 +4198,5 @@ void buf_open_scratch(handle_T bufnr, char *bufname)
set_option_value_give_err("bt", 0L, "nofile", OPT_LOCAL);
set_option_value_give_err("swf", 0L, NULL, OPT_LOCAL);
RESET_BINDING(curwin);
+ return OK;
}