aboutsummaryrefslogtreecommitdiff
path: root/src/free_node.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/free_node.c')
-rw-r--r--src/free_node.c23
1 files changed, 9 insertions, 14 deletions
diff --git a/src/free_node.c b/src/free_node.c
index 8f32c12..6eae059 100644
--- a/src/free_node.c
+++ b/src/free_node.c
@@ -6,21 +6,18 @@
/* By: dkaiser <dkaiser@student.42heilbronn.de +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2024/06/27 11:41:46 by dkaiser #+# #+# */
-/* Updated: 2024/06/28 14:55:50 by dkaiser ### ########.fr */
+/* Updated: 2024/08/11 12:26:20 by dkaiser ### ########.fr */
/* */
/* ************************************************************************** */
#include "ast.h"
-static void free_assign_node(t_node *node);
static void free_pipe_node(t_node *node);
static void free_cmd_node(t_node *node);
void free_node(t_node *node)
{
- if (node->type == ASSIGN_NODE)
- free_assign_node(node);
- else if (node->type == PIPE_NODE)
+ if (node->type == PIPE_NODE)
free_pipe_node(node);
else if (node->type == CMD_NODE)
free_cmd_node(node);
@@ -31,12 +28,6 @@ void free_node(t_node *node)
free(node);
}
-static void free_assign_node(t_node *node)
-{
- free(node->content.assign.var);
- free(node->content.assign.value);
-}
-
static void free_pipe_node(t_node *node)
{
free_node(node->content.pipe.left);
@@ -48,12 +39,16 @@ static void free_cmd_node(t_node *node)
int i;
i = 0;
- while (node->content.cmd.args[i] != NULL)
+ while (node->content.cmd.args != NULL && node->content.cmd.args[i] != NULL)
{
free(node->content.cmd.args[i]);
i++;
}
free(node->content.cmd.args);
- free(node->content.cmd.redirs[0].specifier);
- free(node->content.cmd.redirs[1].specifier);
+ if (node->content.cmd.redirs[0].type != 0
+ && 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)
+ free(node->content.cmd.redirs[1].specifier);
}