From: Bram Moolenaar Date: Sun, 16 Feb 2020 18:42:23 +0000 (+0100) Subject: patch 8.2.0267: no check for a following cmd when calling a function fails X-Git-Tag: v8.2.0267 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=e51bb17dd0d51384375830ee2a1df30c08121443;p=vim patch 8.2.0267: no check for a following cmd when calling a function fails Problem: No check for a following command when calling a function fails. Solution: Also check for a following command when inside a try block. (closes #5642) --- diff --git a/src/testdir/test_user_func.vim b/src/testdir/test_user_func.vim index d10a11084..872b87343 100644 --- a/src/testdir/test_user_func.vim +++ b/src/testdir/test_user_func.vim @@ -162,3 +162,7 @@ endfunc func Test_user_method() eval 'bar'->s:addFoo()->assert_equal('barfoo') endfunc + +func Test_failed_call_in_try() + try | call UnknownFunc() | catch | endtry +endfunc diff --git a/src/userfunc.c b/src/userfunc.c index 1c25a6268..d1d497d69 100644 --- a/src/userfunc.c +++ b/src/userfunc.c @@ -3554,7 +3554,8 @@ ex_call(exarg_T *eap) if (eap->skip) --emsg_skip; - if (!failed) + // When inside :try we need to check for following "| catch". + if (!failed || eap->cstack->cs_trylevel > 0) { // Check for trailing illegal characters and a following command. if (!ends_excmd(*arg)) diff --git a/src/version.c b/src/version.c index 67e23d52c..73a70cdf2 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 */ +/**/ + 267, /**/ 266, /**/