summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2017-10-02 19:29:48 +0200
committerBram Moolenaar <Bram@vim.org>2017-10-02 19:29:48 +0200
commit2a6a6c3014e728cd01c750b0f60484d4eaf22a8c (patch)
tree13f1b1e0e7f5ee17e9e9e53a6a09a2631ce9235b
parent712549e04eddd6687c4b7654ec9af6da6c365603 (diff)
patch 8.0.1172: when E734 is given option is still setv8.0.1172
Problem: When E734 is given option is still set. Solution: Assign NULL to "s". (Christian Brabandt)
-rw-r--r--src/eval.c3
-rw-r--r--src/testdir/test_assign.vim14
-rw-r--r--src/version.c2
3 files changed, 19 insertions, 0 deletions
diff --git a/src/eval.c b/src/eval.c
index 8b1ceaea80..8670e12403 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -1704,7 +1704,10 @@ ex_let_one(
&stringval, opt_flags);
if ((opt_type == 1 && *op == '.')
|| (opt_type == 0 && *op != '.'))
+ {
EMSG2(_(e_letwrong), op);
+ s = NULL; /* don't set the value */
+ }
else
{
if (opt_type == 1) /* number */
diff --git a/src/testdir/test_assign.vim b/src/testdir/test_assign.vim
index efc9d086be..317d45867f 100644
--- a/src/testdir/test_assign.vim
+++ b/src/testdir/test_assign.vim
@@ -29,3 +29,17 @@ func Test_let_termcap()
let &t_xx = ""
call assert_fails('let x = &t_xx', 'E15')
endfunc
+
+func Test_let_option_error()
+ let _w = &tw
+ let &tw = 80
+ call assert_fails('let &tw .= 1', 'E734')
+ call assert_equal(80, &tw)
+ let &tw = _w
+
+ let _w = &fillchars
+ let &fillchars = "vert:|"
+ call assert_fails('let &fillchars += "diff:-"', 'E734')
+ call assert_equal("vert:|", &fillchars)
+ let &fillchars = _w
+endfunc
diff --git a/src/version.c b/src/version.c
index 925a6cd616..6e3f90a37e 100644
--- a/src/version.c
+++ b/src/version.c
@@ -762,6 +762,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 1172,
+/**/
1171,
/**/
1170,