diff options
| -rw-r--r-- | src/nvim/option.c | 2 | ||||
| -rw-r--r-- | src/nvim/testdir/test_options.vim | 13 | 
2 files changed, 14 insertions, 1 deletions
| diff --git a/src/nvim/option.c b/src/nvim/option.c index e354d90c41..7cda42ef20 100644 --- a/src/nvim/option.c +++ b/src/nvim/option.c @@ -1434,7 +1434,7 @@ do_set (                          || (long *)varp == &p_wcm)                         && (*arg == '<'                             || *arg == '^' -                           || ((!arg[1] || ascii_iswhite(arg[1])) +                           || (*arg != NUL && (!arg[1] || ascii_iswhite(arg[1]))                                 && !ascii_isdigit(*arg)))) {                value = string_to_key(arg);                if (value == 0 && (long *)varp != &p_wcm) { diff --git a/src/nvim/testdir/test_options.vim b/src/nvim/testdir/test_options.vim index ea5c39b4f4..66acb79206 100644 --- a/src/nvim/testdir/test_options.vim +++ b/src/nvim/testdir/test_options.vim @@ -29,6 +29,19 @@ function! Test_isfname()    set isfname&  endfunction +function Test_wildchar() +  " Empty 'wildchar' used to access invalid memory. +  call assert_fails('set wildchar=', 'E521:') +  call assert_fails('set wildchar=abc', 'E521:') +  set wildchar=<Esc> +  let a=execute('set wildchar?') +  call assert_equal("\n  wildchar=<Esc>", a) +  set wildchar=27 +  let a=execute('set wildchar?') +  call assert_equal("\n  wildchar=<Esc>", a) +  set wildchar& +endfunction +  function! Test_options()    let caught = 'ok'    try | 
