patch 8.2.2969: subtracting from number option fails when result is zero
Problem: Subtracting from number option fails when result is zero. (Ingo
Karkat)
Solution: Reset the string value when using the numeric value.
(closes #8351)
diff --git a/src/evalvars.c b/src/evalvars.c
index f3b4da2..7581a14 100644
--- a/src/evalvars.c
+++ b/src/evalvars.c
@@ -1439,6 +1439,7 @@
case '%': n = (long)num_modulus(numval, n,
&failed); break;
}
+ s = NULL;
}
else if (opt_type == gov_string
&& stringval != NULL && s != NULL)
diff --git a/src/testdir/test_vimscript.vim b/src/testdir/test_vimscript.vim
index f12d810..89c1001 100644
--- a/src/testdir/test_vimscript.vim
+++ b/src/testdir/test_vimscript.vim
@@ -7083,6 +7083,15 @@
call assert_fails('let &scrolljump .= "j"', 'E734:')
set scrolljump&vim
+ let &foldlevelstart = 2
+ let &foldlevelstart -= 1
+ call assert_equal(1, &foldlevelstart)
+ let &foldlevelstart -= 1
+ call assert_equal(0, &foldlevelstart)
+ let &foldlevelstart = 2
+ let &foldlevelstart -= 2
+ call assert_equal(0, &foldlevelstart)
+
" Test for register
let @/ = 1
call assert_fails('let @/ += 1', 'E734:')
diff --git a/src/version.c b/src/version.c
index d031136..055179c 100644
--- a/src/version.c
+++ b/src/version.c
@@ -751,6 +751,8 @@
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 2969,
+/**/
2968,
/**/
2967,