diff options
author | zeertzjq <zeertzjq@outlook.com> | 2022-11-07 11:04:33 +0800 |
---|---|---|
committer | zeertzjq <zeertzjq@outlook.com> | 2022-11-07 14:25:32 +0800 |
commit | d7bd7f13a8f026b8b95fdc49b4754f6199105891 (patch) | |
tree | 1fb13c11d6da35dc73af1936f9f15b91375c409a /src/nvim/eval.c | |
parent | 42e44d6d334bda8b97afe9e34a819ab293e5e10a (diff) | |
download | rneovim-d7bd7f13a8f026b8b95fdc49b4754f6199105891.tar.gz rneovim-d7bd7f13a8f026b8b95fdc49b4754f6199105891.tar.bz2 rneovim-d7bd7f13a8f026b8b95fdc49b4754f6199105891.zip |
vim-patch:8.2.3756: might crash when callback is not valid
Problem: might crash when callback is not valid.
Solution: Check for valid callback. (Yegappan Lakshmanan, closes vim/vim#9293)
https://github.com/vim/vim/commit/4dc24eb5adbcc76838fae1e900936dd230209d96
Co-authored-by: Yegappan Lakshmanan <yegappan@yahoo.com>
Diffstat (limited to 'src/nvim/eval.c')
-rw-r--r-- | src/nvim/eval.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/src/nvim/eval.c b/src/nvim/eval.c index a4fadcd7bc..daae6416dc 100644 --- a/src/nvim/eval.c +++ b/src/nvim/eval.c @@ -5860,6 +5860,7 @@ bool callback_from_typval(Callback *const callback, typval_T *const arg) return true; } +/// @return whether the callback could be called. bool callback_call(Callback *const callback, const int argcount_in, typval_T *const argvars_in, typval_T *const rettv) FUNC_ATTR_NONNULL_ALL @@ -8705,9 +8706,9 @@ bool invoke_prompt_interrupt(void) argv[0].v_type = VAR_UNKNOWN; got_int = false; // don't skip executing commands - callback_call(&curbuf->b_prompt_interrupt, 0, argv, &rettv); + int ret = callback_call(&curbuf->b_prompt_interrupt, 0, argv, &rettv); tv_clear(&rettv); - return true; + return ret != FAIL; } /// Compare "typ1" and "typ2". Put the result in "typ1". |