aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/nvim/ex_getln.c3
-rw-r--r--test/old/testdir/test_cmdline.vim8
2 files changed, 10 insertions, 1 deletions
diff --git a/src/nvim/ex_getln.c b/src/nvim/ex_getln.c
index ba403e3dd9..f3afbdcaaf 100644
--- a/src/nvim/ex_getln.c
+++ b/src/nvim/ex_getln.c
@@ -4209,7 +4209,8 @@ void f_setcmdline(typval_T *argvars, typval_T *rettv, EvalFuncData fptr)
}
}
- rettv->vval.v_number = set_cmdline_str(argvars[0].vval.v_string, pos);
+ // Use tv_get_string() to handle a NULL string like an empty string.
+ rettv->vval.v_number = set_cmdline_str(tv_get_string(&argvars[0]), pos);
}
/// "setcmdpos()" function
diff --git a/test/old/testdir/test_cmdline.vim b/test/old/testdir/test_cmdline.vim
index 1dceb43e5d..6b2a754dd1 100644
--- a/test/old/testdir/test_cmdline.vim
+++ b/test/old/testdir/test_cmdline.vim
@@ -3532,6 +3532,14 @@ endfunc
func Test_setcmdline()
func SetText(text, pos)
+ call assert_equal(0, setcmdline(v:_null_string))
+ call assert_equal('', getcmdline())
+ call assert_equal(1, getcmdpos())
+
+ call assert_equal(0, setcmdline(''[: -1]))
+ call assert_equal('', getcmdline())
+ call assert_equal(1, getcmdpos())
+
autocmd CmdlineChanged * let g:cmdtype = expand('<afile>')
call assert_equal(0, setcmdline(a:text))
call assert_equal(a:text, getcmdline())