diff --git a/srcs/execution/exec.c b/srcs/execution/exec.c index 9eccfae..4d3f190 100644 --- a/srcs/execution/exec.c +++ b/srcs/execution/exec.c @@ -14,7 +14,7 @@ int execute_command(t_ast_n *node) { - if (!node->cmd) + if (!node || (node->state == _CMD && node->cmd == NULL)) return (0); if (node->state == _CMD) handle_redir(node); diff --git a/srcs/parsing/heredoc.c b/srcs/parsing/heredoc.c index 3c8e769..0ca5a5c 100644 --- a/srcs/parsing/heredoc.c +++ b/srcs/parsing/heredoc.c @@ -128,12 +128,15 @@ void parse_heredoc(char *limiter, t_node *lst, t_msh *msh) void create_heredoc(t_node *lst, t_msh *msh) { + t_node *tmp; + + tmp = lst; while (lst) { if (lst->pressision == HEREDOC && lst->next && lst->next->pressision) { lst = lst->next; - parse_heredoc(lst->val, lst, msh); + parse_heredoc(lst->val, tmp, msh); } lst = lst->next; } diff --git a/srcs/parsing/tokenizer/linked_list.c b/srcs/parsing/tokenizer/linked_list.c index 1842868..8376529 100644 --- a/srcs/parsing/tokenizer/linked_list.c +++ b/srcs/parsing/tokenizer/linked_list.c @@ -53,13 +53,15 @@ int add_node_back(t_node **head, char *val, t_token token, t_pres pres) void free_linked_list(t_node *head) { t_node *tmp; + t_node *next; - while (head) + tmp = head; + while (tmp) { - tmp = head; - head = head->next; + next = tmp->next; free(tmp->val); free(tmp); + tmp = next; } }