rectif cliopts (DG qui segv) + retrait leaks des fds
This commit is contained in:
parent
1d7e3fc03c
commit
e4e0630c42
3 changed files with 5 additions and 8 deletions
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
Loading…
Reference in a new issue