diff --git a/42sh/Makefile b/42sh/Makefile index 4f14983a..dcb635d7 100644 --- a/42sh/Makefile +++ b/42sh/Makefile @@ -13,7 +13,7 @@ NAME = 42sh CC = gcc -FLAGS = -Wall -Wextra -Werror #-fvisibility=hidden +FLAGS = -Wall -Wextra -Werror -fsanitize=address#-fvisibility=hidden D_FLAGS = -g DELTA = $$(echo "$$(tput cols)-47"|bc) diff --git a/42sh/libft/src/cliopts/cliopts_get.c b/42sh/libft/src/cliopts/cliopts_get.c index 72188161..aaa3b889 100644 --- a/42sh/libft/src/cliopts/cliopts_get.c +++ b/42sh/libft/src/cliopts/cliopts_get.c @@ -21,10 +21,6 @@ static char *check_required(char ***av, char *arg) { char *ret; - DG("%p, av", av); - DG("%p, *av", *av); - DG("%p, arg", arg); - DG("%s, *arg", arg); if (!av || !*av) return (NULL); if (!arg || !*arg || !*(arg + 1)) @@ -69,6 +65,8 @@ static int cliopts_parse_short( { if (!(map = get_map_short(opt_map, arg[i]))) return (ERR_SET(E_CO_INV, arg[i])); + ((t_data_template*)data)->flag |= map->flag_on; + ((t_data_template*)data)->flag &= ~map->flag_off; if (map->get) { if (map->arg_required && !(tmp = check_required(av, arg + i))) @@ -77,10 +75,8 @@ static int cliopts_parse_short( if ((map->get)(tmp, data)) return (ERR_SET(E_CO_MISS, *arg)); if (map->arg_required) - arg += ft_strlen(arg) - 1; + break ; } - ((t_data_template*)data)->flag |= map->flag_on; - ((t_data_template*)data)->flag &= ~map->flag_off; } return (++(*av) ? 0 : 0); } diff --git a/42sh/src/main/data_exit.c b/42sh/src/main/data_exit.c index 08ceca6e..c05439ac 100644 --- a/42sh/src/main/data_exit.c +++ b/42sh/src/main/data_exit.c @@ -19,6 +19,7 @@ void data_exit(void) data = data_singleton(); ft_strdel(&data->line.input); ft_strdel(&data->binary); + exec_popfds(); ft_sstrfree(data->env); ft_sstrfree(data->local_var); ft_sstrfree(data->argv);