summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2018-12-05 18:43:28 +0100
committerBram Moolenaar <Bram@vim.org>2018-12-05 18:43:28 +0100
commit88b53fd0521d1e62df17a8a1f2181425e9d4854c (patch)
tree4ae0406155992905321b8d4fe89bc33e15730720
parent74ea88c170f65afa50b2b97e37806d13b4e24cd7 (diff)
patch 8.1.0564: setting v:errors to wrong type still possiblev8.1.0564
Problem: Setting v:errors to wrong type still possible. Solution: Return after giving an error message. (Christian Brabandt)
-rw-r--r--src/eval.c3
-rw-r--r--src/testdir/test_eval_stuff.vim10
-rw-r--r--src/version.c2
3 files changed, 15 insertions, 0 deletions
diff --git a/src/eval.c b/src/eval.c
index 1dae2bfba9..8839e05724 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -7568,7 +7568,10 @@ set_var(
return;
}
else if (v->di_tv.v_type != tv->v_type)
+ {
EMSG2(_("E963: setting %s to value with wrong type"), name);
+ return;
+ }
}
clear_tv(&v->di_tv);
diff --git a/src/testdir/test_eval_stuff.vim b/src/testdir/test_eval_stuff.vim
index bcf45cc784..a1aa788783 100644
--- a/src/testdir/test_eval_stuff.vim
+++ b/src/testdir/test_eval_stuff.vim
@@ -53,3 +53,13 @@ func Test_line_continuation()
"\ and some more
call assert_equal([5, 6], array)
endfunc
+
+func Test_E963()
+ " These commands used to cause an internal error prior to vim 8.1.0563
+ let v_e = v:errors
+ let v_o = v:oldfiles
+ call assert_fails("let v:errors=''", 'E963:')
+ call assert_equal(v_e, v:errors)
+ call assert_fails("let v:oldfiles=''", 'E963:')
+ call assert_equal(v_o, v:oldfiles)
+endfunc
diff --git a/src/version.c b/src/version.c
index 474c96b96a..bc442425ad 100644
--- a/src/version.c
+++ b/src/version.c
@@ -793,6 +793,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 564,
+/**/
563,
/**/
562,