Fix memory leak in ast.

If a node has children the array of children was never freed.
This commit is contained in:
omicron 2025-04-01 21:51:48 +02:00
parent f4638d43b6
commit a09d591e86
2 changed files with 5 additions and 1 deletions

View File

@ -26,6 +26,7 @@ void ast_node_free(ast_node_t *node) {
if (node->children) { if (node->children) {
for (size_t i = 0; i < node->len; ++i) for (size_t i = 0; i < node->len; ++i)
ast_node_free(node->children[i]); ast_node_free(node->children[i]);
free(node->children);
} }
ast_node_free_value(node); ast_node_free_value(node);

View File

@ -17,7 +17,6 @@ typedef enum node_id {
NODE_INSTRUCTION, NODE_INSTRUCTION,
NODE_OPERANDS, NODE_OPERANDS,
NODE_OPERAND, NODE_OPERAND,
NODE_REGISTER,
NODE_IMMEDIATE, NODE_IMMEDIATE,
NODE_MEMORY, NODE_MEMORY,
NODE_NUMBER, NODE_NUMBER,
@ -28,6 +27,10 @@ typedef enum node_id {
NODE_REGISTER_OFFSET, NODE_REGISTER_OFFSET,
NODE_PLUS_OR_MINUS, NODE_PLUS_OR_MINUS,
// Validated primitives
NODE_REGISTER,
NODE_SECTION,
// Primitive nodes // Primitive nodes
NODE_IDENTIFIER, NODE_IDENTIFIER,
NODE_DECIMAL, NODE_DECIMAL,