mirror of
https://github.com/neovim/neovim.git
synced 2025-02-25 18:55:25 -06:00
vim-patch:8.2.0361: internal error when using "0" for a callback
Problem: Internal error when using "0" for a callback.
Solution: Give a normal error. (closes vim/vim#5743)
14e57909e6
This commit is contained in:
parent
1ad414f6ee
commit
b00650cfe9
@ -8114,10 +8114,16 @@ void get_system_output_as_rettv(typval_T *argvars, typval_T *rettv,
|
||||
bool callback_from_typval(Callback *const callback, typval_T *const arg)
|
||||
FUNC_ATTR_NONNULL_ALL FUNC_ATTR_WARN_UNUSED_RESULT
|
||||
{
|
||||
int r = OK;
|
||||
|
||||
if (arg->v_type == VAR_PARTIAL && arg->vval.v_partial != NULL) {
|
||||
callback->data.partial = arg->vval.v_partial;
|
||||
callback->data.partial->pt_refcount++;
|
||||
callback->type = kCallbackPartial;
|
||||
} else if (arg->v_type == VAR_STRING
|
||||
&& arg->vval.v_string != NULL
|
||||
&& ascii_isdigit(*arg->vval.v_string)) {
|
||||
r = FAIL;
|
||||
} else if (arg->v_type == VAR_FUNC || arg->v_type == VAR_STRING) {
|
||||
char_u *name = arg->vval.v_string;
|
||||
func_ref(name);
|
||||
@ -8126,6 +8132,10 @@ bool callback_from_typval(Callback *const callback, typval_T *const arg)
|
||||
} else if (arg->v_type == VAR_NUMBER && arg->vval.v_number == 0) {
|
||||
callback->type = kCallbackNone;
|
||||
} else {
|
||||
r = FAIL;
|
||||
}
|
||||
|
||||
if (r == FAIL) {
|
||||
EMSG(_("E921: Invalid callback argument"));
|
||||
return false;
|
||||
}
|
||||
|
@ -339,4 +339,8 @@ func Test_nocatch_garbage_collect()
|
||||
delfunc FeedChar
|
||||
endfunc
|
||||
|
||||
func Test_timer_invalid_callback()
|
||||
call assert_fails('call timer_start(0, "0")', 'E921')
|
||||
endfunc
|
||||
|
||||
" vim: shiftwidth=2 sts=2 expandtab
|
||||
|
Loading…
Reference in New Issue
Block a user