diff options
author | Bram Moolenaar <Bram@vim.org> | 2016-07-19 22:43:11 +0200 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2016-07-19 22:43:11 +0200 |
commit | 4f0383bc3fe5af0229fb66b53fe94329af783eff (patch) | |
tree | de88ceab4dd9b3fc4829ae138049cce12d833b82 | |
parent | c917da4b3e8801a255dbefea8e4ed19c1c716dd8 (diff) | |
download | vim-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.vim | 5 | ||||
-rw-r--r-- | src/userfunc.c | 8 | ||||
-rw-r--r-- | src/version.c | 2 |
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, |