From 2062ee631c6d66918973c676fb516bd751443801 Mon Sep 17 00:00:00 2001 From: Max Wash Date: Wed, 23 Apr 2025 11:01:12 +0100 Subject: [PATCH] lang: codegen: fix pop_generator_recurse only popping generators with a value_received callback defined --- lang/codegen/codegen.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/lang/codegen/codegen.c b/lang/codegen/codegen.c index 7d219bc..f4dac1e 100644 --- a/lang/codegen/codegen.c +++ b/lang/codegen/codegen.c @@ -315,12 +315,17 @@ static enum ivy_status pop_generator_recurse( struct code_generator_state *state = get_current_generator_state(gen); - if (!state || !state->s_gen->g_value_received) { + if (!state) { return IVY_OK; } - struct code_generator_result result - = state->s_gen->g_value_received(gen, state, value); + struct code_generator_result result = { + .r_status = IVY_OK, + }; + + if (state->s_gen->g_value_received) { + state->s_gen->g_value_received(gen, state, value); + } bool should_pop = ((result.r_flags & CODEGEN_R_POP_GENERATOR) != 0) || node_depth <= state->s_depth;