Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Merge branch 'master' of scm.gforge.inria.fr:/gitroot/simgrid/simgrid
[simgrid.git] / src / instr / jedule / jedule_output.cpp
index bde765f..1657721 100644 (file)
@@ -15,6 +15,8 @@
 
 #if HAVE_JEDULE
 
+#define STR_BUF_SIZE 1024
+
 XBT_LOG_NEW_DEFAULT_SUBCATEGORY(jed_out, jedule, "Logging specific to Jedule output");
 
 xbt_dynar_t jedule_event_list;
@@ -52,8 +54,8 @@ static void get_hierarchy_list(xbt_dynar_t hier_list, jed_simgrid_container_t co
   }
 }
 
-static void get_hierarchy_string(jed_simgrid_container_t container, char *outbuf) {
-    char buf[1024];
+static void get_hierarchy_string(jed_simgrid_container_t container, char *outbuf, int bufsize) {
+    char buf[STR_BUF_SIZE];
     xbt_dynar_t hier_list;
     unsigned int iter;
     int number;
@@ -67,11 +69,11 @@ static void get_hierarchy_string(jed_simgrid_container_t container, char *outbuf
 
     xbt_dynar_foreach(hier_list, iter, number) {
         if( iter != length-1 ) {
-            snprintf(buf, 1024, "%d.", number);
+            snprintf(buf, STR_BUF_SIZE, "%d.", number);
         } else {
-            snprintf(buf, 1024, "%d", number);
+            snprintf(buf, STR_BUF_SIZE, "%d", number);
         }
-        strncat(outbuf, buf, strlen(buf));
+        strncat(outbuf, buf, bufsize-strlen(outbuf));
     }
 
     xbt_dynar_free(&hier_list);
@@ -92,12 +94,12 @@ static void print_resources(jed_simgrid_container_t resource_parent) {
   unsigned int res_nb;
   unsigned int i;
   char *res_name;
-    char resid[1024];
+  char resid[STR_BUF_SIZE];
   xbt_assert( resource_parent->resource_list != NULL );
 
   res_nb = xbt_dynar_length(resource_parent->resource_list);
 
-  get_hierarchy_string(resource_parent, resid);
+  get_hierarchy_string(resource_parent, resid, STR_BUF_SIZE);
 
   fprintf(jed_file, "      <rset id=\"%s\" nb=\"%d\" names=\"", resid, res_nb);
   xbt_dynar_foreach(resource_parent->resource_list, i, res_name) {
@@ -151,9 +153,9 @@ static void print_event(jed_event_t event) {
   xbt_dynar_foreach(event->resource_subsets, i, subset) {
     int start = subset->start_idx;
     int end   = subset->start_idx + subset->nres - 1;
-    char resid[1024];
+    char resid[STR_BUF_SIZE];
 
-    get_hierarchy_string(subset->parent, resid);
+    get_hierarchy_string(subset->parent, resid, STR_BUF_SIZE);
     fprintf(jed_file, "        <select resources=\"");
     fprintf(jed_file, "%s", resid);
     fprintf(jed_file, ".[%d-%d]", start, end);