From: Arnaud Giersch Date: Thu, 5 Jul 2012 20:29:31 +0000 (+0200) Subject: Check if cnst->cnst_usage is NULL. X-Git-Tag: v3_8~322 X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/commitdiff_plain/3d11b865e20621ab35546483d933bd60f2785c18 Check if cnst->cnst_usage is NULL. Fixes a segfault in test-maxmin-usage. --- 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; }