summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2021-06-10 18:43:25 +0200
committerBram Moolenaar <Bram@vim.org>2021-06-10 18:43:25 +0200
commita42e6e0082a6d564dbfa55317d4a698ac12ae898 (patch)
treef494a8a3be7ec38071904e8c1c4558cf0d53113e
parent54656015d384a96ef814dfcf2a18e47f5ba3df14 (diff)
downloadvim-git-a42e6e0082a6d564dbfa55317d4a698ac12ae898.tar.gz
patch 8.2.2969: subtracting from number option fails when result is zerov8.2.2969
Problem: Subtracting from number option fails when result is zero. (Ingo Karkat) Solution: Reset the string value when using the numeric value. (closes #8351)
-rw-r--r--src/evalvars.c1
-rw-r--r--src/testdir/test_vimscript.vim9
-rw-r--r--src/version.c2
3 files changed, 12 insertions, 0 deletions
diff --git a/src/evalvars.c b/src/evalvars.c
index f3b4da222..7581a1417 100644
--- a/src/evalvars.c
+++ b/src/evalvars.c
@@ -1439,6 +1439,7 @@ ex_let_one(
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 f12d810e0..89c100189 100644
--- a/src/testdir/test_vimscript.vim
+++ b/src/testdir/test_vimscript.vim
@@ -7083,6 +7083,15 @@ func Test_compound_assignment_operators()
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 d03113602..055179cd2 100644
--- a/src/version.c
+++ b/src/version.c
@@ -751,6 +751,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 2969,
+/**/
2968,
/**/
2967,