diff --git a/srcs/parsing/ast/nodes/subsh.c b/srcs/parsing/ast/nodes/subsh.c index ed3aae5..07a9405 100644 --- a/srcs/parsing/ast/nodes/subsh.c +++ b/srcs/parsing/ast/nodes/subsh.c @@ -34,7 +34,7 @@ t_node *remove_parentheses(t_node *lst) if (deepness == 0) break ; add_node_back(&out, str, it->token, it->pressision); - free(str); + ft_free(&str); it = it->next; } ft_free(&str); diff --git a/srcs/parsing/ast/utils/cutll.c b/srcs/parsing/ast/utils/cutll.c index b772a8c..8025c2d 100644 --- a/srcs/parsing/ast/utils/cutll.c +++ b/srcs/parsing/ast/utils/cutll.c @@ -36,9 +36,9 @@ static void update_subsh_l(int *shlvl, t_node *lst) if (!lst) return ; if (!ft_strncmp(")", lst->val, 1)) - *shlvl = 0; + *shlvl -= 1; if (!ft_strncmp("(", lst->val, 1)) - *shlvl = 1; + *shlvl += 1; } static t_node *get_node(t_node **lst, t_node *expected, @@ -53,7 +53,7 @@ static t_node *get_node(t_node **lst, t_node *expected, (*lst) = (*lst)->next; } while (limiter == -1 && (*lst) - && (*shlvl == 1 + && (*shlvl >= 2 || ft_strncmp((*lst)->val, expected->val, ft_strlen((*lst)->val)))) { update_subsh_l(shlvl, *lst);