From 0ff822d2ebf0d130516631734b00179ba8dd8251 Mon Sep 17 00:00:00 2001 From: Bram Moolenaar Date: Sun, 8 Dec 2019 18:41:34 +0100 Subject: [PATCH] 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) --- src/eval.c | 2 +- src/testdir/test_lambda.vim | 5 +++++ src/version.c | 2 ++ 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/src/eval.c b/src/eval.c index 178f47388e..3b563f7dbe 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 7689219955..c55de67b52 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 d4a677c797..1d6d323bc5 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, /**/ -- 2.47.2