diff options
Diffstat (limited to 'src')
-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 |