final finish on the parsing protecting the malloc

This commit is contained in:
Maoake Teriierooiterai
2026-01-09 07:21:50 +01:00
parent 0df082065e
commit 32a0668b62
3 changed files with 31 additions and 11 deletions

View File

@@ -16,23 +16,27 @@
static int verif_arg(char *argv) static int verif_arg(char *argv)
{ {
int i; int len;
int verif;
char **split;
i = 0; split = ft_split(argv, ' ');
while (argv[i]) if (!split)
{ return (-1);
if (argv[i] == ' ') len = len_split(split);
return (1); if (len > 1)
i++; verif = 1;
} else
return (0); verif = 0;
free_tab(split);
return (verif);
} }
int calcul_mod(int argc, char **argv) int calcul_mod(int argc, char **argv)
{ {
int mod; 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)) if (ft_strncmp("--", argv[1], 2) && ft_strncmp("--", argv[2], 2))
mod = 2; mod = 2;
@@ -41,7 +45,7 @@ int calcul_mod(int argc, char **argv)
else else
mod = 0; mod = 0;
} }
else else if (verif_arg(argv[argc -1]) == 1)
{ {
if (ft_strncmp("--", argv[1], 2) && ft_strncmp("--", argv[2], 2)) if (ft_strncmp("--", argv[1], 2) && ft_strncmp("--", argv[2], 2))
mod = 5; mod = 5;
@@ -50,6 +54,8 @@ int calcul_mod(int argc, char **argv)
else else
mod = 3; mod = 3;
} }
else
mod = -1;
return (mod); return (mod);
} }

View File

@@ -64,6 +64,11 @@ static t_stack *special_parsing(char **argv, int mod)
return (NULL); return (NULL);
len = len_split(split_tab); len = len_split(split_tab);
a = parsing(len, split_tab, mod); a = parsing(len, split_tab, mod);
if (!a)
{
free_tab(split_tab);
return (NULL);
}
free_tab(split_tab); free_tab(split_tab);
return (a); return (a);
} }
@@ -101,6 +106,11 @@ t_stacks *init_piles(int argc, char **argv, int mod)
a = parsing(argc, argv, mod); a = parsing(argc, argv, mod);
else else
a = special_parsing(argv, mod); a = special_parsing(argv, mod);
if (!a)
{
free(stacks);
return (NULL);
}
stacks->a = a; stacks->a = a;
return (stacks); return (stacks);
} }

View File

@@ -24,7 +24,11 @@ int test1(int argc, char **argv)
piles = NULL; piles = NULL;
mod = calcul_mod(argc, argv); mod = calcul_mod(argc, argv);
if (mod == -1)
return (0);
piles = init_piles(argc, argv, mod); piles = init_piles(argc, argv, mod);
if (!piles)
return (0);
if (check_order(piles->a)) if (check_order(piles->a))
return (0); return (0);
flags(pos_flag(argv, mod), pos_bench(argv, mod), argv, piles); flags(pos_flag(argv, mod), pos_bench(argv, mod), argv, piles);