From a2fd1803981107c1c5d5eda130f2442f56f935e6 Mon Sep 17 00:00:00 2001 From: Tanguy MAZE Date: Sun, 7 Apr 2019 12:51:40 +0200 Subject: [PATCH] some light work today corrected invalid read in update_weights() when tab[i].parent was equal to -1 --- srcs/edmunds_karp.c | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/srcs/edmunds_karp.c b/srcs/edmunds_karp.c index 1b2dc97..d00442d 100644 --- a/srcs/edmunds_karp.c +++ b/srcs/edmunds_karp.c @@ -6,7 +6,7 @@ /* By: tmaze +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2019/03/28 16:21:19 by tmaze #+# #+# */ -/* Updated: 2019/04/05 15:13:53 by tmaze ### ########.fr */ +/* Updated: 2019/04/07 12:50:24 by tmaze ### ########.fr */ /* */ /* ************************************************************************** */ @@ -20,16 +20,19 @@ static void update_weights(t_lmdata *data, t_bfs *tab, int end_ind) i = end_ind; while (i != -1) { - it = data->adj[tab[i].parent]; - while (it && it->index != i) - it = it->next; - if (it && it->index == i) - it->weight--; - it = data->adj[i]; - while (it && it->index != tab[i].parent) - it = it->next; - if (it && it->index == tab[i].parent) - it->weight++; + if (tab[i].parent != -1) + { + it = data->adj[tab[i].parent]; + while (it && it->index != i) + it = it->next; + if (it && it->index == i) + it->weight--; + it = data->adj[i]; + while (it && it->index != tab[i].parent) + it = it->next; + if (it && it->index == tab[i].parent) + it->weight++; + } i = tab[i].parent; } }