aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/nvim/option.c2
-rw-r--r--src/nvim/testdir/test_options.vim13
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