Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Fix another race in log initializations.
[simgrid.git] / src / surf / maxmin.c
index ff65a88..db76f87 100644 (file)
@@ -25,7 +25,6 @@ static void lmm_update_modified_set(lmm_system_t sys,
 static void lmm_remove_all_modified_set(lmm_system_t sys);
 static int Global_debug_id = 1;
 static int Global_const_debug_id = 1;
-extern xbt_swag_t keep_track;
 
 lmm_system_t lmm_system_new(int selective_update)
 {
@@ -552,9 +551,8 @@ void lmm_solve(lmm_system_t sys)
           cnst->usage = elem->value / elem->variable->weight;
 
         make_elem_active(elem);
-        if(keep_track){
-            xbt_swag_insert((elem->variable)->id, keep_track);
-        }
+        if (sys->keep_track)
+          xbt_swag_insert(elem->variable->id, sys->keep_track);
       }
     }
     XBT_DEBUG("Constraint Usage '%d' : %f", cnst->id_int, cnst->usage);
@@ -719,13 +717,13 @@ void lmm_update_variable_weight(lmm_system_t sys, lmm_variable_t var,
       xbt_swag_insert_at_head(elem, &(elem->constraint->element_set));
     else
       xbt_swag_insert_at_tail(elem, &(elem->constraint->element_set));
+
+    if (i == 0)
+      lmm_update_modified_set(sys, elem->constraint);
   }
   if (!weight)
     var->value = 0.0;
 
-  if (var->cnsts_number)
-     lmm_update_modified_set(sys, var->cnsts[0].constraint);
-
   XBT_OUT();
 }
 
@@ -789,10 +787,8 @@ static void lmm_update_modified_set_rec(lmm_system_t sys,
     lmm_variable_t var = elem->variable;
     s_lmm_element_t *cnsts = var->cnsts;
     int i;
-    if (var->visited == sys->visited_counter)
-       continue;
-    var->visited = sys->visited_counter;
-    for (i = 0; i < var->cnsts_number; i++) {
+    for (i = 0; var->visited != sys->visited_counter
+             && i < var->cnsts_number ; i++) {
       if (cnsts[i].constraint != cnst
           && !xbt_swag_belongs(cnsts[i].constraint,
                                &sys->modified_constraint_set)) {
@@ -800,6 +796,7 @@ static void lmm_update_modified_set_rec(lmm_system_t sys,
         lmm_update_modified_set_rec(sys, cnsts[i].constraint);
       }
     }
+    var->visited = sys->visited_counter;
   }
 }