summaryrefslogtreecommitdiff
path: root/src/codegen/codegen_stmt.c
diff options
context:
space:
mode:
authorZuhaitz Méndez Fernández de Aránguiz <zuhaitz@debian>2026-01-27 10:20:32 +0000
committerZuhaitz Méndez Fernández de Aránguiz <zuhaitz@debian>2026-01-27 10:20:40 +0000
commit08247ead8ecd05d892b98bfb12ed807bcfebfc5c (patch)
treede10d620840075c96aa7fdcbc2bda6745ca22877 /src/codegen/codegen_stmt.c
parent86ae08ff28ee47c57546c487b0bdaab27c4ab5ad (diff)
Fix zero init bug
Diffstat (limited to 'src/codegen/codegen_stmt.c')
-rw-r--r--src/codegen/codegen_stmt.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/codegen/codegen_stmt.c b/src/codegen/codegen_stmt.c
index 6e41109..1679d97 100644
--- a/src/codegen/codegen_stmt.c
+++ b/src/codegen/codegen_stmt.c
@@ -942,6 +942,13 @@ void codegen_node_single(ParserContext *ctx, ASTNode *node, FILE *out)
fprintf(out, " = ");
codegen_expression(ctx, node->var_decl.init_expr, out);
}
+ else if (node->type_info && (node->type_info->kind == TYPE_ARRAY ||
+ node->type_info->kind == TYPE_STRUCT ||
+ node->type_info->kind == TYPE_BOOL))
+ {
+ // Zero initialize arrays and structs by default so we don't have garbage
+ fprintf(out, " = {0}");
+ }
fprintf(out, ";\n");
if (node->var_decl.init_expr &&
emit_move_invalidation(ctx, node->var_decl.init_expr, out))