diff options
author | Justin M. Keyes <justinkz@gmail.com> | 2020-03-08 13:36:52 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-03-08 13:36:52 -0700 |
commit | 2b00d1d09c0ff7ee6cc2de7ba70d9e84167540e5 (patch) | |
tree | e436abc7dab365b52a2385af6fabe5516907c773 /src | |
parent | f8f41d088b2b7b503f638ce8930bedb32c0d32c5 (diff) | |
parent | b00650cfe909313e58aa8181474d7f016d9df94a (diff) | |
download | rneovim-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')
-rw-r--r-- | src/nvim/eval.c | 10 | ||||
-rw-r--r-- | src/nvim/option.c | 2 | ||||
-rw-r--r-- | src/nvim/testdir/test_filetype.vim | 1 | ||||
-rw-r--r-- | src/nvim/testdir/test_timers.vim | 4 |
4 files changed, 16 insertions, 1 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; } diff --git a/src/nvim/option.c b/src/nvim/option.c index 8c9c326a28..5a27ff21cc 100644 --- a/src/nvim/option.c +++ b/src/nvim/option.c @@ -2568,7 +2568,7 @@ static bool valid_filetype(const char_u *val) bool valid_spellang(const char_u *val) FUNC_ATTR_NONNULL_ALL FUNC_ATTR_PURE FUNC_ATTR_WARN_UNUSED_RESULT { - return valid_name(val, ".-_,"); + return valid_name(val, ".-_,@"); } /// Return true if "val" is a valid 'spellfile' value. diff --git a/src/nvim/testdir/test_filetype.vim b/src/nvim/testdir/test_filetype.vim index 7290cceb0b..9605348389 100644 --- a/src/nvim/testdir/test_filetype.vim +++ b/src/nvim/testdir/test_filetype.vim @@ -600,6 +600,7 @@ let s:script_checks = { \ 'haskell': [['#!/path/haskell']], \ 'cpp': [['// Standard iostream objects -*- C++ -*-'], \ ['// -*- C++ -*-']], + \ 'yaml': [['%YAML 1.2']], \ } func Test_script_detection() diff --git a/src/nvim/testdir/test_timers.vim b/src/nvim/testdir/test_timers.vim index 3043103270..40376a877e 100644 --- a/src/nvim/testdir/test_timers.vim +++ b/src/nvim/testdir/test_timers.vim @@ -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 |