From 36f691f5f1d0676f080cc97d697d742ed5cc8251 Mon Sep 17 00:00:00 2001 From: Bram Moolenaar Date: Wed, 8 Sep 2021 15:33:30 +0200 Subject: [PATCH] patch 8.2.3416: second error is reported while exception is being thrown Problem: Second error is reported while exception is being thrown. Solution: Do not check for trailing characters when already aborting. (closes #8842) --- src/testdir/test_trycatch.vim | 24 ++++++++++++++++++++++++ src/userfunc.c | 2 +- src/version.c | 2 ++ 3 files changed, 27 insertions(+), 1 deletion(-) diff --git a/src/testdir/test_trycatch.vim b/src/testdir/test_trycatch.vim index b5ad14c2a..702d6dabb 100644 --- a/src/testdir/test_trycatch.vim +++ b/src/testdir/test_trycatch.vim @@ -2224,5 +2224,29 @@ func Test_user_command_try_catch() unlet g:caught endfunc +" Test for using throw in a called function with following error {{{1 +func Test_user_command_throw_in_function_call() + let lines =<< trim END + function s:get_dict() abort + throw 'my_error' + endfunction + + try + call s:get_dict().foo() + catch /my_error/ + let caught = 'yes' + catch + let caught = 'no' + endtry + call assert_equal('yes', caught) + END + call writefile(lines, 'XtestThrow') + source XtestThrow + + call delete('XtestThrow') + unlet g:caught +endfunc + + " Modeline {{{1 " vim: ts=8 sw=2 sts=2 expandtab tw=80 fdm=marker diff --git a/src/userfunc.c b/src/userfunc.c index e51df51ff..dc0a939eb 100644 --- a/src/userfunc.c +++ b/src/userfunc.c @@ -5012,7 +5012,7 @@ ex_call(exarg_T *eap) clear_evalarg(&evalarg, eap); // When inside :try we need to check for following "| catch". - if (!failed || eap->cstack->cs_trylevel > 0) + if (!aborting() && (!failed || eap->cstack->cs_trylevel > 0)) { // Check for trailing illegal characters and a following command. arg = skipwhite(arg); diff --git a/src/version.c b/src/version.c index a349398bf..c28a302a3 100644 --- a/src/version.c +++ b/src/version.c @@ -755,6 +755,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 3416, /**/ 3415, /**/ -- 2.50.1