changeset 10207:9415453b7bbd v8.0.0004

commit https://github.com/vim/vim/commit/5582ef14384525e8cec86016876d97a6b32dd548 Author: Bram Moolenaar <Bram@vim.org> Date: Wed Sep 14 22:16:13 2016 +0200 patch 8.0.0004 Problem: A string argument for function() that is not a function name results in an error message with NULL. (Christian Brabandt) Solution: Use the argument for the error message.
author Christian Brabandt <cb@256bit.org>
date Wed, 14 Sep 2016 22:30:10 +0200
parents d5e814245456
children 39c5f03a0e77
files src/evalfunc.c src/testdir/test_expr.vim src/version.c
diffstat 3 files changed, 6 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/src/evalfunc.c
+++ b/src/evalfunc.c
@@ -3612,7 +3612,7 @@ common_function(typval_T *argvars, typva
 
     if (s == NULL || *s == NUL || (use_string && VIM_ISDIGIT(*s))
 					 || (is_funcref && trans_name == NULL))
-	EMSG2(_(e_invarg2), s);
+	EMSG2(_(e_invarg2), use_string ? get_tv_string(&argvars[0]) : s);
     /* Don't check an autoload name for existence here. */
     else if (trans_name != NULL && (is_funcref
 				? find_func(trans_name) == NULL
--- a/src/testdir/test_expr.vim
+++ b/src/testdir/test_expr.vim
@@ -439,6 +439,9 @@ func Test_function_with_funcref()
   let s:fref = function(s:f)
   call assert_equal(v:t_string, s:fref('x'))
   call assert_fails("call function('s:f')", 'E700:')
+
+  call assert_fails("call function('foo()')", 'E475:')
+  call assert_fails("call function('foo()')", 'foo()')
 endfunc
 
 func Test_funcref()
--- a/src/version.c
+++ b/src/version.c
@@ -765,6 +765,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    4,
+/**/
     3,
 /**/
     2,