Leaks and error checking almost done
function to clean traces of holder is done. Error checking before adjacency list creation is done also. Now focusing on breaking the parser with invalid maps. It should be ready in a day.
This commit is contained in:
parent
86b0530bf7
commit
eb85b914a4
@ -6,13 +6,12 @@
|
||||
/* By: tmaze <tmaze@student.42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2019/03/23 17:31:19 by tmaze #+# #+# */
|
||||
/* Updated: 2019/04/11 10:50:04 by tmaze ### ########.fr */
|
||||
/* Updated: 2019/04/11 12:47:51 by mndhlovu ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
#ifndef LEM_IN_H
|
||||
# define LEM_IN_H
|
||||
|
||||
# include "libft.h"
|
||||
# include "limits.h"
|
||||
|
||||
@ -104,7 +103,7 @@ int lm_add_vertex(t_lmdata *ldata, char *raw, char flag
|
||||
int lm_ext_conn(t_holder *holder, t_lmdata *data
|
||||
, char *raw);
|
||||
int lm_find_index(t_lmdata *data, char *str);
|
||||
|
||||
void lm_clear_unv(t_holder *holder);
|
||||
int lm_get_value(char *line);
|
||||
void lm_get_cmd_vert(int count, t_syntax *synt
|
||||
, t_lmdata *ldata, char *line);
|
||||
|
@ -6,7 +6,7 @@
|
||||
/* By: mndhlovu <marvin@42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2019/03/25 06:31:05 by mndhlovu #+# #+# */
|
||||
/* Updated: 2019/04/11 10:50:40 by tmaze ### ########.fr */
|
||||
/* Updated: 2019/04/11 12:48:07 by mndhlovu ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
@ -41,10 +41,13 @@ static int lem_in(t_syntax *synt, t_holder *holder,
|
||||
{
|
||||
if (!(lm_parser(synt, lmdata, holder)))
|
||||
return (0);
|
||||
if (!(lm_verify_cmd(synt, holder, data)))
|
||||
return (0);
|
||||
if (!lst_indinit(lmdata))
|
||||
return (0);
|
||||
if (!(lm_adj_parser(lmdata, holder)))
|
||||
return (0);
|
||||
lm_clear_unv(holder);
|
||||
if ((*ret = edmunds_karp(lmdata, get_node_role(lmdata, 's')->ind
|
||||
, get_node_role(lmdata, 'e')->ind)) == NULL)
|
||||
return (0);
|
||||
|
@ -6,7 +6,7 @@
|
||||
/* By: mndhlovu <marvin@42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2019/04/02 08:39:09 by mndhlovu #+# #+# */
|
||||
/* Updated: 2019/04/08 15:43:01 by tmaze ### ########.fr */
|
||||
/* Updated: 2019/04/11 12:48:13 by mndhlovu ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
@ -25,10 +25,28 @@ int lm_check_room_before(char **tab, t_syntax *synt)
|
||||
return (1);
|
||||
}
|
||||
|
||||
int lm_verify_cmd(t_syntax *synt)
|
||||
void lm_clear_unv(t_holder *holder)
|
||||
{
|
||||
if (synt->s_cmd && synt->e_cmd && synt->v_error
|
||||
&& synt->l_error && synt->e_error)
|
||||
t_temp *data;
|
||||
t_temp *flush;
|
||||
|
||||
data = holder->data;
|
||||
while (tmp)
|
||||
{
|
||||
flush = data;
|
||||
data = data->next;
|
||||
free(flush);
|
||||
flush = NULL;
|
||||
}
|
||||
holder->data = NULL;
|
||||
}
|
||||
|
||||
int lm_verify_cmd(t_syntax *synt, t_holder *holder, t_lmdata *data)
|
||||
{
|
||||
if (synt->s_cmd && synt->e_cmd && !synt->v_error
|
||||
&& !synt->l_error && !synt->e_error && !synt->s_error
|
||||
&& synt->nb_state && (holder->count > 0)
|
||||
&& (data->nb_nodes > 0))
|
||||
return (1);
|
||||
return (0);
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user