rectif cliopts (DG qui segv) + retrait leaks des fds

This commit is contained in:
william 2017-03-25 13:13:19 +01:00
parent 1d7e3fc03c
commit e4e0630c42
3 changed files with 5 additions and 8 deletions

View file

@ -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)

View file

@ -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);
}

View file

@ -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);