From a09d591e864f27ba9674d8b44a3a550eadc790f7 Mon Sep 17 00:00:00 2001 From: omicron Date: Tue, 1 Apr 2025 21:51:48 +0200 Subject: [PATCH] Fix memory leak in ast. If a node has children the array of children was never freed. --- src/ast.c | 1 + src/ast.h | 5 ++++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/ast.c b/src/ast.c index d53ab49..65ac611 100644 --- a/src/ast.c +++ b/src/ast.c @@ -26,6 +26,7 @@ void ast_node_free(ast_node_t *node) { if (node->children) { for (size_t i = 0; i < node->len; ++i) ast_node_free(node->children[i]); + free(node->children); } ast_node_free_value(node); diff --git a/src/ast.h b/src/ast.h index e64fb0e..6e6b5cc 100644 --- a/src/ast.h +++ b/src/ast.h @@ -17,7 +17,6 @@ typedef enum node_id { NODE_INSTRUCTION, NODE_OPERANDS, NODE_OPERAND, - NODE_REGISTER, NODE_IMMEDIATE, NODE_MEMORY, NODE_NUMBER, @@ -28,6 +27,10 @@ typedef enum node_id { NODE_REGISTER_OFFSET, NODE_PLUS_OR_MINUS, + // Validated primitives + NODE_REGISTER, + NODE_SECTION, + // Primitive nodes NODE_IDENTIFIER, NODE_DECIMAL,