summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2016-07-19 22:43:11 +0200
committerBram Moolenaar <Bram@vim.org>2016-07-19 22:43:11 +0200
commit4f0383bc3fe5af0229fb66b53fe94329af783eff (patch)
treede88ceab4dd9b3fc4829ae138049cce12d833b82
parentc917da4b3e8801a255dbefea8e4ed19c1c716dd8 (diff)
downloadvim-git-4f0383bc3fe5af0229fb66b53fe94329af783eff.tar.gz
patch 7.4.2076v7.4.2076
Problem: Syntax error when dict has '>' key. Solution: Check for endchar. (Ken Takata)
-rw-r--r--src/testdir/test_lambda.vim5
-rw-r--r--src/userfunc.c8
-rw-r--r--src/version.c2
3 files changed, 13 insertions, 2 deletions
diff --git a/src/testdir/test_lambda.vim b/src/testdir/test_lambda.vim
index 9e9979b0c..cbd4addce 100644
--- a/src/testdir/test_lambda.vim
+++ b/src/testdir/test_lambda.vim
@@ -46,3 +46,8 @@ function Test_lambda_fails()
call assert_fails('echo {a, a -> a + a}(1, 2)', 'E15:')
call assert_fails('echo {a, b -> a + b)}(1, 2)', 'E15:')
endfunc
+
+func Test_not_lamda()
+ let x = {'>' : 'foo'}
+ call assert_equal('foo', x['>'])
+endfunc
diff --git a/src/userfunc.c b/src/userfunc.c
index ea1542385..9ffafc371 100644
--- a/src/userfunc.c
+++ b/src/userfunc.c
@@ -150,7 +150,9 @@ func_init()
hash_init(&func_hashtab);
}
-/* Get function arguments. */
+/*
+ * Get function arguments.
+ */
static int
get_function_args(
char_u **argp,
@@ -232,7 +234,9 @@ get_function_args(
break;
}
}
- ++p; /* skip the ')' */
+ if (*p != endchar)
+ goto err_ret;
+ ++p; /* skip "endchar" */
*argp = p;
return OK;
diff --git a/src/version.c b/src/version.c
index cb8fed64f..6f1d53a26 100644
--- a/src/version.c
+++ b/src/version.c
@@ -759,6 +759,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 2076,
+/**/
2075,
/**/
2074,