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,