summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2019-06-07 23:15:22 +0200
committerBram Moolenaar <Bram@vim.org>2019-06-07 23:15:22 +0200
commit606407384144df73a6154aca1d77e071fe1b7651 (patch)
tree326e43b2a4055b7b6e782a9c264c25b9f8214c98
parent4e0bf846279f3efa6299a98143033db1fdfa143a (diff)
downloadvim-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.c2
-rw-r--r--src/testdir/test_eval_stuff.vim9
-rw-r--r--src/version.c2
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,