aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorzeertzjq <zeertzjq@outlook.com>2022-01-31 08:12:44 +0800
committerGitHub <noreply@github.com>2022-01-31 08:12:44 +0800
commit62c8715ee9be95f9e0f5164dc9b39a04f4d60e8a (patch)
treebd7209e1daebe31d563fee443988f24f4efd7c27 /src
parent4dcc7bcbedbb2a9e9166b94900d4c3e363468578 (diff)
downloadrneovim-62c8715ee9be95f9e0f5164dc9b39a04f4d60e8a.tar.gz
rneovim-62c8715ee9be95f9e0f5164dc9b39a04f4d60e8a.tar.bz2
rneovim-62c8715ee9be95f9e0f5164dc9b39a04f4d60e8a.zip
vim-patch:8.1.2412: crash when evaluating expression with error (#17109)
Diffstat (limited to 'src')
-rw-r--r--src/nvim/eval.c2
-rw-r--r--src/nvim/testdir/test_lambda.vim5
2 files changed, 6 insertions, 1 deletions
diff --git a/src/nvim/eval.c b/src/nvim/eval.c
index 40fa05da4f..3325628a8e 100644
--- a/src/nvim/eval.c
+++ b/src/nvim/eval.c
@@ -4402,7 +4402,7 @@ static int eval_lambda(char_u **const arg, typval_T *const rettv, const bool eva
rettv->v_type = VAR_UNKNOWN;
int ret = get_lambda_tv(arg, rettv, evaluate);
- if (ret == NOTDONE) {
+ if (ret != OK) {
return FAIL;
} else if (**arg != '(') {
if (verbose) {
diff --git a/src/nvim/testdir/test_lambda.vim b/src/nvim/testdir/test_lambda.vim
index 63bb4ae1ef..72ddbcf6dc 100644
--- a/src/nvim/testdir/test_lambda.vim
+++ b/src/nvim/testdir/test_lambda.vim
@@ -303,3 +303,8 @@ func Test_lambda_with_index()
let Extract = {-> function(List, ['foobar'])()[0]}
call assert_equal('foobar', Extract())
endfunc
+
+func Test_lambda_error()
+ " This was causing a crash
+ call assert_fails('ec{@{->{d->()()', 'E15')
+endfunc