From 3d11b865e20621ab35546483d933bd60f2785c18 Mon Sep 17 00:00:00 2001 From: Arnaud Giersch Date: Thu, 5 Jul 2012 22:29:31 +0200 Subject: [PATCH] Check if cnst->cnst_usage is NULL. Fixes a segfault in test-maxmin-usage. --- src/surf/maxmin.c | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/src/surf/maxmin.c b/src/surf/maxmin.c index ba965bab5b..b8f4d10af5 100644 --- a/src/surf/maxmin.c +++ b/src/surf/maxmin.c @@ -641,13 +641,15 @@ void lmm_solve(lmm_system_t sys) double_update(&(cnst->remaining), elem->value * var->value); double_update(&(cnst->usage), elem->value / var->weight); if(cnst->usage<=0 || cnst->remaining<=0) { - int index = (cnst->cnst_light-cnst_light_tab); - XBT_DEBUG("index: %d \t cnst_light_num: %d \t || \t cnst: %p \t cnst->cnst_light: %p \t cnst_light_tab: %p ", - index,cnst_light_num, cnst, cnst->cnst_light, cnst_light_tab); - cnst_light_tab[index]=cnst_light_tab[cnst_light_num-1]; - cnst_light_tab[index].cnst->cnst_light = &cnst_light_tab[index]; - cnst_light_num--; - cnst->cnst_light = NULL; + if (cnst->cnst_light) { + int index = (cnst->cnst_light-cnst_light_tab); + XBT_DEBUG("index: %d \t cnst_light_num: %d \t || \t cnst: %p \t cnst->cnst_light: %p \t cnst_light_tab: %p ", + index,cnst_light_num, cnst, cnst->cnst_light, cnst_light_tab); + cnst_light_tab[index]=cnst_light_tab[cnst_light_num-1]; + cnst_light_tab[index].cnst->cnst_light = &cnst_light_tab[index]; + cnst_light_num--; + cnst->cnst_light = NULL; + } } else { cnst->cnst_light->remaining_over_usage = cnst->remaining / cnst->usage; } -- 2.20.1