Skip to content

Commit 7d4e49f

Browse files
authored
Merge pull request #121 from Brainrotlang/ci/memoryl_leaks
ci(memory_leaks): Fix CI valgrind check and resolve function memory leaks
2 parents 3f312e7 + 261a935 commit 7d4e49f

File tree

2 files changed

+8
-1
lines changed

2 files changed

+8
-1
lines changed

ast.c

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3435,6 +3435,7 @@ void free_ast(ASTNode *node)
34353435
case NODE_FUNCTION_DEF:
34363436
SAFE_FREE(node->data.function_def.name);
34373437
// Free parameters
3438+
free_parameters(node->data.function_def.parameters);
34383439
if (node->data.function_def.body)
34393440
{
34403441
free_ast(node->data.function_def.body);
@@ -3786,6 +3787,7 @@ void enter_function_scope(Function *func, ArgumentList *args)
37863787
Variable *var = variable_new(curr_param->name);
37873788
var->var_type = curr_param->type;
37883789
add_variable_to_scope(curr_param->name, var);
3790+
SAFE_FREE(var);
37893791

37903792
switch (curr_param->type)
37913793
{
@@ -3810,5 +3812,6 @@ void enter_function_scope(Function *func, ArgumentList *args)
38103812
}
38113813
curr_param = curr_param->next;
38123814
}
3815+
reverse_parameter_list(&func->parameters);
38133816
}
38143817

run_valgrind_tests.sh

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,5 +18,9 @@ for f in test_cases/*.brainrot; do
1818
else
1919
valgrind --leak-check=full --error-exitcode=1 ./brainrot "$f"
2020
fi
21+
if [[ $? -ne 0 ]]; then
22+
echo "Valgrind failed on $f"
23+
exit 1
24+
fi
2125
echo
22-
done
26+
done

0 commit comments

Comments
 (0)