diff --git a/srcs/main.c b/srcs/main.c index c598624..c563002 100644 --- a/srcs/main.c +++ b/srcs/main.c @@ -31,6 +31,16 @@ static void add_prevhistory(t_msh *msh) } } +static void exit_manual(t_msh *msh) +{ + int ret; + + ret = msh->ex_code; + free_msh(msh); + ft_fprintf(2, "exit\n"); + exit(ret); +} + int interactive_mode(t_msh *msh) { msh->input = malloc(1); @@ -40,7 +50,7 @@ int interactive_mode(t_msh *msh) free(msh->input); msh->input = powerline(msh); if (!msh->input) - return (0); + exit_manual(msh); } if (!msh->input) return (1); diff --git a/srcs/parsing/tokenizer/tokenizer.c b/srcs/parsing/tokenizer/tokenizer.c index 5ff33ab..b9d7ed0 100644 --- a/srcs/parsing/tokenizer/tokenizer.c +++ b/srcs/parsing/tokenizer/tokenizer.c @@ -130,6 +130,6 @@ t_node *tokenize(char *str) del_void_nodes(&head); debug_token_list(head, "tokenizer"); if (syntax_error(head)) - return (NULL); + return (free_linked_list(head), NULL); return (head); } diff --git a/srcs/parsing/tokenizer/unstick_node_utils.c b/srcs/parsing/tokenizer/unstick_node_utils.c index a1c0875..6f50b5a 100644 --- a/srcs/parsing/tokenizer/unstick_node_utils.c +++ b/srcs/parsing/tokenizer/unstick_node_utils.c @@ -92,7 +92,7 @@ int is_sticked(char *val) } meta[meta_it] = -1; if ((meta[0] != -1 && unmeta) || !unic(meta) || (meta[0] == '(' - && meta[1] == '(') || (meta[0] == ')' && meta[1] == ')')) + && meta[1] == '(') || (meta[0] == ')' && meta[1] == ')')) return (1); return (0); }