]> AND Public Git Repository - simgrid.git/blobdiff - src/surf/maxmin.c
Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Plug a memleak
[simgrid.git] / src / surf / maxmin.c
index 0f02192b316d46bd301ecc0b1892dbf1a211e6ad..0c524b8c2194fc55db987229ac03537b49250760 100644 (file)
@@ -11,6 +11,7 @@
 #include "xbt/mallocator.h"
 #include "maxmin_private.h"
 #include <stdlib.h>
+#include <stdio.h> /* sprintf */
 #include <math.h>
 XBT_LOG_NEW_DEFAULT_SUBCATEGORY(surf_maxmin, surf,
                                "Logging specific to SURF (maxmin)");
@@ -202,6 +203,11 @@ double lmm_variable_getvalue(lmm_variable_t var)
   return (var->value);
 }
 
+double lmm_variable_getbound(lmm_variable_t var)
+{
+  return (var->bound);
+}
+
 void lmm_expand(lmm_system_t sys, lmm_constraint_t cnst,
                lmm_variable_t var, double value)
 {
@@ -273,13 +279,16 @@ int lmm_get_number_of_cnst_from_var(lmm_system_t sys, lmm_variable_t var)
 
 lmm_variable_t lmm_get_var_from_cnst(lmm_system_t sys,
                                     lmm_constraint_t cnst,
-                                    lmm_variable_t * var)
+                                    lmm_element_t * elem)
 {
-  if (!(*var))
-    xbt_swag_getFirst(&(cnst->element_set));
+  if (!(*elem))
+    *elem = xbt_swag_getFirst(&(cnst->element_set));
   else
-    *var = xbt_swag_getNext(*var, cnst->element_set.offset);
-  return *var;
+    *elem = xbt_swag_getNext(*elem, cnst->element_set.offset);
+  if(*elem)
+    return (*elem)->variable;
+  else 
+    return NULL;
 }
 
 void *lmm_constraint_id(lmm_constraint_t cnst)
@@ -374,6 +383,7 @@ void lmm_print(lmm_system_t sys)
   DEBUG1("%s", trace_buf);
   trace_buf[0] = '\000';
 
+  DEBUG0("Constraints");
   /* Printing Constraints */
   cnst_list = &(sys->active_constraint_set);
   xbt_swag_foreach(cnst, cnst_list) {
@@ -411,6 +421,7 @@ void lmm_print(lmm_system_t sys)
            sum, cnst->bound, sum - cnst->bound);
   }
 
+  DEBUG0("Variables");
   /* Printing Result */
   xbt_swag_foreach(var, var_list) {
     if (var->bound > 0) {