diff options
-rw-r--r-- | src/ex_docmd.c | 9 | ||||
-rw-r--r-- | src/testdir/test_cmdline.vim | 1 | ||||
-rw-r--r-- | src/version.c | 2 |
3 files changed, 9 insertions, 3 deletions
diff --git a/src/ex_docmd.c b/src/ex_docmd.c index 2738f4f4d..b52629ed1 100644 --- a/src/ex_docmd.c +++ b/src/ex_docmd.c @@ -3791,12 +3791,15 @@ f_fullcommand(typval_T *argvars, typval_T *rettv) char_u *name = argvars[0].vval.v_string; char_u *p; - while (name[0] != NUL && name[0] == ':') + rettv->v_type = VAR_STRING; + rettv->vval.v_string = NULL; + if (name == NULL) + return; + + while (*name != NUL && *name == ':') name++; name = skip_range(name, TRUE, NULL); - rettv->v_type = VAR_STRING; - ea.cmd = (*name == '2' || *name == '3') ? name + 1 : name; ea.cmdidx = (cmdidx_T)0; p = find_ex_command(&ea, NULL, NULL, NULL); diff --git a/src/testdir/test_cmdline.vim b/src/testdir/test_cmdline.vim index d167d4c7c..c3a638ba1 100644 --- a/src/testdir/test_cmdline.vim +++ b/src/testdir/test_cmdline.vim @@ -475,6 +475,7 @@ func Test_fullcommand() for [in, want] in items(tests) call assert_equal(want, fullcommand(in)) endfor + call assert_equal('', fullcommand(test_null_string())) call assert_equal('syntax', 'syn'->fullcommand()) endfunc diff --git a/src/version.c b/src/version.c index 4eced11fd..a6ab4cfc8 100644 --- a/src/version.c +++ b/src/version.c @@ -751,6 +751,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 2887, +/**/ 2886, /**/ 2885, |