diff --git a/flags/flag.c b/flags/flag.c index 83c2ba3..7bf2bf9 100644 --- a/flags/flag.c +++ b/flags/flag.c @@ -16,23 +16,27 @@ static int verif_arg(char *argv) { - int i; + int len; + int verif; + char **split; - i = 0; - while (argv[i]) - { - if (argv[i] == ' ') - return (1); - i++; - } - return (0); + split = ft_split(argv, ' '); + if (!split) + return (-1); + len = len_split(split); + if (len > 1) + verif = 1; + else + verif = 0; + free_tab(split); + return (verif); } int calcul_mod(int argc, char **argv) { int mod; - if (!verif_arg(argv[argc -1])) + if (verif_arg(argv[argc -1]) == 0) { if (ft_strncmp("--", argv[1], 2) && ft_strncmp("--", argv[2], 2)) mod = 2; @@ -41,7 +45,7 @@ int calcul_mod(int argc, char **argv) else mod = 0; } - else + else if (verif_arg(argv[argc -1]) == 1) { if (ft_strncmp("--", argv[1], 2) && ft_strncmp("--", argv[2], 2)) mod = 5; @@ -50,6 +54,8 @@ int calcul_mod(int argc, char **argv) else mod = 3; } + else + mod = -1; return (mod); } diff --git a/parsing/parsing.c b/parsing/parsing.c index e83d8e9..d50f84a 100644 --- a/parsing/parsing.c +++ b/parsing/parsing.c @@ -64,6 +64,11 @@ static t_stack *special_parsing(char **argv, int mod) return (NULL); len = len_split(split_tab); a = parsing(len, split_tab, mod); + if (!a) + { + free_tab(split_tab); + return (NULL); + } free_tab(split_tab); return (a); } @@ -101,6 +106,11 @@ t_stacks *init_piles(int argc, char **argv, int mod) a = parsing(argc, argv, mod); else a = special_parsing(argv, mod); + if (!a) + { + free(stacks); + return (NULL); + } stacks->a = a; return (stacks); } diff --git a/test_one.c b/test_one.c index 3b73465..1cfc18f 100644 --- a/test_one.c +++ b/test_one.c @@ -24,7 +24,11 @@ int test1(int argc, char **argv) piles = NULL; mod = calcul_mod(argc, argv); + if (mod == -1) + return (0); piles = init_piles(argc, argv, mod); + if (!piles) + return (0); if (check_order(piles->a)) return (0); flags(pos_flag(argv, mod), pos_bench(argv, mod), argv, piles);