From 0adbf08727f980e35e60676bf49e9d031dd4884b Mon Sep 17 00:00:00 2001 From: Lukas Jiriste Date: Fri, 21 Jun 2024 11:22:40 +0200 Subject: [PATCH] Fix memory leak This leak was caused by carelessness when working with malloc and t_vec at the same time. --- ft_parse/ft_parse.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/ft_parse/ft_parse.c b/ft_parse/ft_parse.c index bd1cf9d..864f851 100644 --- a/ft_parse/ft_parse.c +++ b/ft_parse/ft_parse.c @@ -6,7 +6,7 @@ /* By: ljiriste +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/05/20 20:51:36 by ljiriste #+# #+# */ -/* Updated: 2024/06/21 10:56:32 by ljiriste ### ########.fr */ +/* Updated: 2024/06/21 11:21:24 by ljiriste ### ########.fr */ /* */ /* ************************************************************************** */ @@ -15,15 +15,21 @@ #include "libft.h" #include -void ft_parse_tree_free(void *v_node) +static void parse_tree_free_children(void *v_node) { t_parse_tree_node *node; node = v_node; if (!node) return ; - ft_vec_free(&node->children, ft_parse_tree_free); + ft_vec_free(&node->children, parse_tree_free_children); free_token(&node->token); +} + +void ft_parse_tree_free(void *node) +{ + parse_tree_free_children(node); + free(node); return ; } @@ -113,6 +119,7 @@ int follow_rule(t_stack *stack, size_t rule_num, t_parsing_table *table) ft_parse_tree_free(node); return (1); } + free(node); } element.state_num = goto_state(((t_parser_stack_element *)ft_stack_top(stack))->state_num, table, rule->result); return (ft_stack_push(stack, &element) != success || element.state_num < 0); -- 2.30.2