# HG changeset patch # User Bram Moolenaar # Date 1623343503 -7200 # Node ID f1a390885192d8bc2210e356b1fd8a445e1f0c2c # Parent 97f000974cc27f7a7d46933fa4112886c28f3c0e patch 8.2.2969: subtracting from number option fails when result is zero Commit: https://github.com/vim/vim/commit/a42e6e0082a6d564dbfa55317d4a698ac12ae898 Author: Bram Moolenaar Date: Thu Jun 10 18:43:25 2021 +0200 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 --- 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 --- 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 --- 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,