diff options
author | Bram Moolenaar <Bram@vim.org> | 2019-06-07 23:15:22 +0200 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2019-06-07 23:15:22 +0200 |
commit | 606407384144df73a6154aca1d77e071fe1b7651 (patch) | |
tree | 326e43b2a4055b7b6e782a9c264c25b9f8214c98 | |
parent | 4e0bf846279f3efa6299a98143033db1fdfa143a (diff) | |
download | vim-git-606407384144df73a6154aca1d77e071fe1b7651.tar.gz |
patch 8.1.1491: when skipping over code a function call may cause troublev8.1.1491
Problem: When skipping over code after an exception was thrown expression
evaluation is aborted after a function call. (Ingo Karkat)
Solution: Do not fail if not executing the expression. (closes #4507)
-rw-r--r-- | src/eval.c | 2 | ||||
-rw-r--r-- | src/testdir/test_eval_stuff.vim | 9 | ||||
-rw-r--r-- | src/version.c | 2 |
3 files changed, 12 insertions, 1 deletions
diff --git a/src/eval.c b/src/eval.c index abb3b4069..c86d0a664 100644 --- a/src/eval.c +++ b/src/eval.c @@ -4592,7 +4592,7 @@ eval7( /* Stop the expression evaluation when immediately * aborting on error, or when an interrupt occurred or * an exception was thrown but not caught. */ - if (aborting()) + if (evaluate && aborting()) { if (ret == OK) clear_tv(rettv); diff --git a/src/testdir/test_eval_stuff.vim b/src/testdir/test_eval_stuff.vim index c77972339..db68e2a40 100644 --- a/src/testdir/test_eval_stuff.vim +++ b/src/testdir/test_eval_stuff.vim @@ -178,3 +178,12 @@ func Test_scriptversion() call assert_fails('source Xversionscript', 'E999:') call delete('Xversionscript') endfunc + +" Test fix for issue #4507 +func Test_skip_after_throw() + try + throw 'something' + let x = wincol() || &ts + catch /something/ + endtry +endfunc diff --git a/src/version.c b/src/version.c index 75ebdc1ed..79d040037 100644 --- a/src/version.c +++ b/src/version.c @@ -768,6 +768,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 1491, +/**/ 1490, /**/ 1489, |