From: Bram Moolenaar Date: Wed, 5 Dec 2018 17:43:28 +0000 (+0100) Subject: patch 8.1.0564: setting v:errors to wrong type still possible X-Git-Tag: v8.1.0564 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=88b53fd0521d1e62df17a8a1f2181425e9d4854c;p=vim patch 8.1.0564: setting v:errors to wrong type still possible Problem: Setting v:errors to wrong type still possible. Solution: Return after giving an error message. (Christian Brabandt) --- diff --git a/src/eval.c b/src/eval.c index 1dae2bfba..8839e0572 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 bcf45cc78..a1aa78878 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 474c96b96..bc442425a 100644 --- a/src/version.c +++ b/src/version.c @@ -792,6 +792,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 564, /**/ 563, /**/