aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/eval.c
diff options
context:
space:
mode:
authorJustin M. Keyes <justinkz@gmail.com>2020-03-08 13:36:52 -0700
committerGitHub <noreply@github.com>2020-03-08 13:36:52 -0700
commit2b00d1d09c0ff7ee6cc2de7ba70d9e84167540e5 (patch)
treee436abc7dab365b52a2385af6fabe5516907c773 /src/nvim/eval.c
parentf8f41d088b2b7b503f638ce8930bedb32c0d32c5 (diff)
parentb00650cfe909313e58aa8181474d7f016d9df94a (diff)
downloadrneovim-2b00d1d09c0ff7ee6cc2de7ba70d9e84167540e5.tar.gz
rneovim-2b00d1d09c0ff7ee6cc2de7ba70d9e84167540e5.tar.bz2
rneovim-2b00d1d09c0ff7ee6cc2de7ba70d9e84167540e5.zip
Merge #11977 from janlazo/vim-8.1.1279
vim-patch:8.1.1279,8.2.{360,361}
Diffstat (limited to 'src/nvim/eval.c')
-rw-r--r--src/nvim/eval.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/nvim/eval.c b/src/nvim/eval.c
index f5c5ef9e97..ca0e078e4a 100644
--- a/src/nvim/eval.c
+++ b/src/nvim/eval.c
@@ -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;
}