aboutsummaryrefslogtreecommitdiff
path: root/src/free_node.c
diff options
context:
space:
mode:
authorDominik Kaiser2025-01-25 15:58:12 +0100
committerGitHub2025-01-25 15:58:12 +0100
commit3b97eaa0500314866c4a106c77e8f671c9751b89 (patch)
treef44fffea0ef290f9bdf79448c90d794ba97b8ca4 /src/free_node.c
parentbd8c817797d5f2b1affe6957ffc51846a38e70ec (diff)
parent8fb5e2839cb7eb7bb72f577577afafcdbdc8a714 (diff)
downloadminishell-3b97eaa0500314866c4a106c77e8f671c9751b89.tar.gz
minishell-3b97eaa0500314866c4a106c77e8f671c9751b89.zip
Merge memory leak fixes
Diffstat (limited to 'src/free_node.c')
-rw-r--r--src/free_node.c20
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);
}