From: Bram Moolenaar Date: Sun, 8 Dec 2019 17:41:34 +0000 (+0100) Subject: patch 8.1.2412: crash when evaluating expression with error X-Git-Tag: v8.1.2412 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=0ff822d2ebf0d130516631734b00179ba8dd8251;p=vim patch 8.1.2412: crash when evaluating expression with error Problem: Crash when evaluating expression with error. (Dhiraj Mishra) Solution: Check parsing failed. (closes #5329) --- diff --git a/src/eval.c b/src/eval.c index 178f47388..3b563f7db 100644 --- a/src/eval.c +++ b/src/eval.c @@ -2902,7 +2902,7 @@ eval_lambda( rettv->v_type = VAR_UNKNOWN; ret = get_lambda_tv(arg, rettv, evaluate); - if (ret == NOTDONE) + if (ret != OK) return FAIL; else if (**arg != '(') { diff --git a/src/testdir/test_lambda.vim b/src/testdir/test_lambda.vim index 768921995..c55de67b5 100644 --- a/src/testdir/test_lambda.vim +++ b/src/testdir/test_lambda.vim @@ -302,3 +302,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 diff --git a/src/version.c b/src/version.c index d4a677c79..1d6d323bc 100644 --- a/src/version.c +++ b/src/version.c @@ -742,6 +742,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 2412, /**/ 2411, /**/