diff options
author | Bram Moolenaar <Bram@vim.org> | 2021-12-18 16:54:31 +0000 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2021-12-18 16:54:31 +0000 |
commit | 605ec91e5a7330d61be313637e495fa02a6dc264 (patch) | |
tree | f3d03e51a7bde96ecc0f05271909536b4973b42d | |
parent | 60618c8f1a7ea55452837a446525272142286471 (diff) | |
download | vim-git-605ec91e5a7330d61be313637e495fa02a6dc264.tar.gz |
patch 8.2.3847: illegal memory access when using a lambda with an errorv8.2.3847
Problem: Illegal memory access when using a lambda with an error.
Solution: Avoid skipping over the NUL after a string.
-rw-r--r-- | src/eval.c | 7 | ||||
-rw-r--r-- | src/testdir/test_lambda.vim | 2 | ||||
-rw-r--r-- | src/version.c | 2 |
3 files changed, 9 insertions, 2 deletions
diff --git a/src/eval.c b/src/eval.c index f45cd8e77..ecc242dcd 100644 --- a/src/eval.c +++ b/src/eval.c @@ -3871,12 +3871,15 @@ eval_lambda( ++*arg; ret = eval1(arg, rettv, evalarg); *arg = skipwhite_and_linebreak(*arg, evalarg); - if (**arg != ')') + if (**arg == ')') + { + ++*arg; + } + else { emsg(_(e_missing_closing_paren)); ret = FAIL; } - ++*arg; } if (ret != OK) return FAIL; diff --git a/src/testdir/test_lambda.vim b/src/testdir/test_lambda.vim index e173ea389..e6dcb6774 100644 --- a/src/testdir/test_lambda.vim +++ b/src/testdir/test_lambda.vim @@ -64,6 +64,8 @@ function Test_lambda_fails() call assert_fails('echo {a, a -> a + a}(1, 2)', 'E853:') call assert_fails('echo {a, b -> a + b)}(1, 2)', 'E451:') echo assert_fails('echo 10->{a -> a + 2}', 'E107:') + + call assert_fails('eval 0->(', "E110: Missing ')'") endfunc func Test_not_lamda() diff --git a/src/version.c b/src/version.c index 92612d5a3..8ae0a86f4 100644 --- a/src/version.c +++ b/src/version.c @@ -750,6 +750,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 3847, +/**/ 3846, /**/ 3845, |