# HG changeset patch # User Christian Brabandt # Date 1468961106 -7200 # Node ID 3ca0fd9709b197c4ee254f45f8604a518dde54da # Parent a638edc96bb6acddf78cb09928634d0462a4f732 commit https://github.com/vim/vim/commit/4f0383bc3fe5af0229fb66b53fe94329af783eff Author: Bram Moolenaar Date: Tue Jul 19 22:43:11 2016 +0200 patch 7.4.2076 Problem: Syntax error when dict has '>' key. Solution: Check for endchar. (Ken Takata) diff --git a/src/testdir/test_lambda.vim b/src/testdir/test_lambda.vim --- 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 --- 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 --- 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,