Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Use %zu for type size_t.
[simgrid.git] / src / simdag / sd_daxloader.c
index 40b4e62..a4364e7 100644 (file)
@@ -8,6 +8,7 @@
 #include "simdag/simdag.h"
 #include "xbt/misc.h"
 #include "xbt/log.h"
+#include <libgen.h>
 
 XBT_LOG_NEW_DEFAULT_SUBCATEGORY(sd_daxparse, sd, "Parsing DAX files");
 
@@ -22,7 +23,7 @@ bool parents_are_marked(SD_task_t task);
 static void dax_parse_error(char *msg)
 {
   fprintf(stderr, "Parse error on line %d: %s\n", dax_lineno, msg);
-  abort();
+  xbt_abort();
 }
 
 static double dax_parse_double(const char *string)
@@ -384,8 +385,16 @@ xbt_dynar_t SD_daxload(const char *filename)
     }
   }
 
-  acyclic_graph_detail(result);
-  return result;
+  if (!acyclic_graph_detail(result)){
+    XBT_ERROR("The DAX described in %s is not a DAG. It contains a cycle.",
+              basename((char*)filename));
+    xbt_dynar_foreach(result, cpt, file)
+      SD_task_destroy(file);
+     xbt_dynar_free_container(&result);
+    return NULL;
+  } else {
+    return result;
+  }
 }
 
 void STag_dax__adag(void)