patch 9.0.0535: closure gets wrong value in for loop with two loop variables

Problem:    Closure gets wrong value in for loop with two loop variables.
Solution:   Correctly compute the number of loop variables to clear.
diff --git a/src/ex_eval.c b/src/ex_eval.c
index 9afcb56..5721b76 100644
--- a/src/ex_eval.c
+++ b/src/ex_eval.c
@@ -1240,8 +1240,14 @@
 		// variable that we reuse every time around.
 		// Do this backwards, so that vars defined in a later round are
 		// found first.
-		first = cstack->cs_script_var_len[cstack->cs_idx]
-					  + (eap->cmdidx == CMD_while ? 0 : 1);
+		first = cstack->cs_script_var_len[cstack->cs_idx];
+		if (eap->cmdidx == CMD_for)
+		{
+		    forinfo_T	*fi = cstack->cs_forinfo[cstack->cs_idx];
+
+		    first += fi == NULL || fi->fi_varcount == 0
+							 ? 1 : fi->fi_varcount;
+		}
 		for (i = si->sn_var_vals.ga_len - 1; i >= first; --i)
 		{
 		    svar_T	*sv = ((svar_T *)si->sn_var_vals.ga_data) + i;