aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/generator.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/src/generator.c b/src/generator.c
index 403bf4a..7de9d32 100644
--- a/src/generator.c
+++ b/src/generator.c
@@ -251,8 +251,10 @@ void generate_statement(Node *stmt, FILE *out)
fprintf(out, " push rax\n"); // Save the return value
// Run all the defer statements
- for (int i = defer_stack_count - 1; i >= 0; i--)
- generate_statement(defer_stack[i], out);
+ i64 old_count = defer_stack_count;
+ while (defer_stack_count > 0)
+ generate_statement(defer_stack[--defer_stack_count], out);
+ defer_stack_count = old_count;
// TODO: Only do this if we have local variables
fprintf(out, " pop rax\n");