changeset 12588:5bc07e5d2c1f v8.0.1172

patch 8.0.1172: when E734 is given option is still set commit https://github.com/vim/vim/commit/2a6a6c3014e728cd01c750b0f60484d4eaf22a8c Author: Bram Moolenaar <Bram@vim.org> Date: Mon Oct 2 19:29:48 2017 +0200 patch 8.0.1172: when E734 is given option is still set Problem: When E734 is given option is still set. Solution: Assign NULL to "s". (Christian Brabandt)
author Christian Brabandt <cb@256bit.org>
date Mon, 02 Oct 2017 19:30:04 +0200
parents 133f06bc6ca0
children e2908d2e9f5d
files src/eval.c src/testdir/test_assign.vim src/version.c
diffstat 3 files changed, 19 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- 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 */
--- 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
--- 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,