patch 8.1.0535: increment/decrement might get interrupted by updating folds

Problem:    Increment/decrement might get interrupted by updating folds.
Solution:   Disable fold updating for a moment. (Christian Brabandt,
            closes #3599)
diff --git a/src/ops.c b/src/ops.c
index d6559a2..7564fac 100644
--- a/src/ops.c
+++ b/src/ops.c
@@ -5549,12 +5549,27 @@
     int			change_cnt = 0;
     linenr_T		amount = Prenum1;
 
+   // do_addsub() might trigger re-evaluation of 'foldexpr' halfway, when the
+   // buffer is not completly updated yet. Postpone updating folds until before
+   // the call to changed_lines().
+#ifdef FEAT_FOLDING
+   disable_fold_update++;
+#endif
+
     if (!VIsual_active)
     {
 	pos = curwin->w_cursor;
 	if (u_save_cursor() == FAIL)
+	{
+#ifdef FEAT_FOLDING
+	    disable_fold_update--;
+#endif
 	    return;
+	}
 	change_cnt = do_addsub(oap->op_type, &pos, 0, amount);
+#ifdef FEAT_FOLDING
+	disable_fold_update--;
+#endif
 	if (change_cnt)
 	    changed_lines(pos.lnum, 0, pos.lnum + 1, 0L);
     }
@@ -5566,7 +5581,12 @@
 
 	if (u_save((linenr_T)(oap->start.lnum - 1),
 					(linenr_T)(oap->end.lnum + 1)) == FAIL)
+	{
+#ifdef FEAT_FOLDING
+	    disable_fold_update--;
+#endif
 	    return;
+	}
 
 	pos = oap->start;
 	for (; pos.lnum <= oap->end.lnum; ++pos.lnum)
@@ -5624,6 +5644,10 @@
 	    if (g_cmd && one_change)
 		amount += Prenum1;
 	}
+
+#ifdef FEAT_FOLDING
+	disable_fold_update--;
+#endif
 	if (change_cnt)
 	    changed_lines(oap->start.lnum, 0, oap->end.lnum + 1, 0L);