diff options
Diffstat (limited to 'src/free_token.c')
| -rw-r--r-- | src/free_token.c | 36 |
1 files changed, 26 insertions, 10 deletions
diff --git a/src/free_token.c b/src/free_token.c index 9b035ac..64278a8 100644 --- a/src/free_token.c +++ b/src/free_token.c @@ -3,14 +3,15 @@ /* ::: :::::::: */ /* free_token.c :+: :+: :+: */ /* +:+ +:+ +:+ */ -/* By: dkaiser <dkaiser@student.42heilbronn.de +#+ +:+ +#+ */ +/* By: chuhlig <chuhlig@student.42.fr> +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/06/27 14:38:57 by dkaiser #+# #+# */ -/* Updated: 2024/08/02 14:23:56 by dkaiser ### ########.fr */ +/* Updated: 2025/01/22 00:07:58 by chuhlig ### ########.fr */ /* */ /* ************************************************************************** */ #include "token.h" +#include "debug_tools.h" void free_token(t_token *token) { @@ -18,7 +19,10 @@ void free_token(t_token *token) token->previous->next = NULL; if (token->next != NULL) token->next->previous = NULL; - free(token); + // if (token->type == STRING_TOKEN && token->content.string != NULL) + // free(token->content.string); // Ensure content is freed + free(token);//maybe free token + token = NULL; } void free_token_and_connect(t_token *token) @@ -28,14 +32,26 @@ void free_token_and_connect(t_token *token) if (token->next != NULL) token->next->previous = token->previous; free(token); + token = NULL; } -void free_tokens(t_token *tokens) +// void free_tokens(t_token *tokens) +// { +// while (tokens->next != NULL) +// { +// tokens = tokens->next; +// free_token(tokens->previous); +// } +// free_token(tokens); +// } +void free_tokens(t_token *tokens) { - while (tokens->next != NULL) - { - tokens = tokens->next; - free_token(tokens->previous); - } - free_token(tokens); + t_token *tmp; + + while (tokens) + { + tmp = tokens; + tokens = tokens->next; + free_token(tmp); // Ensure each token is freed + } } |
