diff options
| author | Dominik Kaiser | 2025-01-25 15:58:12 +0100 |
|---|---|---|
| committer | GitHub | 2025-01-25 15:58:12 +0100 |
| commit | 3b97eaa0500314866c4a106c77e8f671c9751b89 (patch) | |
| tree | f44fffea0ef290f9bdf79448c90d794ba97b8ca4 /src/free_node.c | |
| parent | bd8c817797d5f2b1affe6957ffc51846a38e70ec (diff) | |
| parent | 8fb5e2839cb7eb7bb72f577577afafcdbdc8a714 (diff) | |
| download | minishell-3b97eaa0500314866c4a106c77e8f671c9751b89.tar.gz minishell-3b97eaa0500314866c4a106c77e8f671c9751b89.zip | |
Merge memory leak fixes
Diffstat (limited to 'src/free_node.c')
| -rw-r--r-- | src/free_node.c | 20 |
1 files changed, 15 insertions, 5 deletions
diff --git a/src/free_node.c b/src/free_node.c index 6eae059..e62d6cb 100644 --- a/src/free_node.c +++ b/src/free_node.c @@ -3,10 +3,10 @@ /* ::: :::::::: */ /* free_node.c :+: :+: :+: */ /* +:+ +:+ +:+ */ -/* By: dkaiser <dkaiser@student.42heilbronn.de +#+ +:+ +#+ */ +/* By: chuhlig <chuhlig@student.42.fr> +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/06/27 11:41:46 by dkaiser #+# #+# */ -/* Updated: 2024/08/11 12:26:20 by dkaiser ### ########.fr */ +/* Updated: 2025/01/25 11:39:01 by chuhlig ### ########.fr */ /* */ /* ************************************************************************** */ @@ -14,6 +14,7 @@ static void free_pipe_node(t_node *node); static void free_cmd_node(t_node *node); +static void free_file(void *arg); void free_node(t_node *node) { @@ -23,8 +24,6 @@ void free_node(t_node *node) free_cmd_node(node); else if (node->type == STRING_NODE) free(node->content.string); - else - panic(UNREACHABLE); free(node); } @@ -49,6 +48,17 @@ static void free_cmd_node(t_node *node) && node->content.cmd.redirs[0].specifier != NULL) free(node->content.cmd.redirs[0].specifier); if (node->content.cmd.redirs[1].type != 0 - && node->content.cmd.redirs[0].specifier != NULL) + && node->content.cmd.redirs[1].specifier != NULL) free(node->content.cmd.redirs[1].specifier); + if (node->content.cmd.create_files != NULL) + ft_lstclear(&node->content.cmd.create_files, free_file); +} + +static void free_file(void *arg) +{ + t_redirection *file; + + file = (t_redirection *)arg; + free(file->specifier); + free(file); } |
