From a42e6e0082a6d564dbfa55317d4a698ac12ae898 Mon Sep 17 00:00:00 2001 From: Bram Moolenaar Date: Thu, 10 Jun 2021 18:43:25 +0200 Subject: [PATCH] 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) --- src/evalvars.c | 1 + src/testdir/test_vimscript.vim | 9 +++++++++ src/version.c | 2 ++ 3 files changed, 12 insertions(+) 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 @@ -750,6 +750,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 2969, /**/ 2968, /**/ -- 2.40.0