Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
[simdag/dotloader] correction of some memory leak
authorquintin <quintin@48e7efb5-ca39-0410-a469-dd3cf9ba447f>
Thu, 2 Dec 2010 21:19:52 +0000 (21:19 +0000)
committerquintin <quintin@48e7efb5-ca39-0410-a469-dd3cf9ba447f>
Thu, 2 Dec 2010 21:19:52 +0000 (21:19 +0000)
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/simgrid/simgrid/trunk@8931 48e7efb5-ca39-0410-a469-dd3cf9ba447f

examples/simdag/dot/dot_test2.c
src/simdag/sd_dotloader.c

index 8ea2f54..fd52e8f 100644 (file)
@@ -26,7 +26,7 @@ int main(int argc, char **argv)
   SD_init(&argc, argv);
 
   /* Check our arguments */
   SD_init(&argc, argv);
 
   /* Check our arguments */
-  if (argc < 1) {
+  if (argc < 2) {
     INFO1("Usage: %s dot_file", argv[0]);
     exit(1);
   }
     INFO1("Usage: %s dot_file", argv[0]);
     exit(1);
   }
index 46aa9f5..c9c34ce 100644 (file)
@@ -23,7 +23,7 @@ XBT_LOG_NEW_DEFAULT_SUBCATEGORY(sd_dotparse, sd, "Parsing DOT files");
 void dot_add_task(Agnode_t * dag_node);
 void dot_add_input_dependencies(SD_task_t current_job, Agedge_t * edge);
 void dot_add_output_dependencies(SD_task_t current_job, Agedge_t * edge);
 void dot_add_task(Agnode_t * dag_node);
 void dot_add_input_dependencies(SD_task_t current_job, Agedge_t * edge);
 void dot_add_output_dependencies(SD_task_t current_job, Agedge_t * edge);
-xbt_dynar_t SD_dotload_FILE(FILE * in_file);
+xbt_dynar_t SD_dotload_generic(const char * filename);
 
 static double dot_parse_double(const char *string)
 {
 
 static double dot_parse_double(const char *string)
 {
@@ -97,10 +97,7 @@ static void TRACE_sd_dotloader (SD_task_t task, const char *category)
  */
 xbt_dynar_t SD_dotload(const char *filename)
 {
  */
 xbt_dynar_t SD_dotload(const char *filename)
 {
-  FILE *in_file = fopen(filename, "r");
-  xbt_assert1(in_file, "Unable to open \"%s\"\n", filename);
-  SD_dotload_FILE(in_file);
-  fclose(in_file);
+  SD_dotload_generic(filename);
   xbt_dynar_t computer = NULL;
   xbt_dict_cursor_t dict_cursor;
   char *computer_name;
   xbt_dynar_t computer = NULL;
   xbt_dict_cursor_t dict_cursor;
   char *computer_name;
@@ -112,10 +109,7 @@ xbt_dynar_t SD_dotload(const char *filename)
 }
 
 xbt_dynar_t SD_dotload_with_sched(const char *filename){
 }
 
 xbt_dynar_t SD_dotload_with_sched(const char *filename){
-  FILE *in_file = fopen(filename, "r");
-  xbt_assert1(in_file, "Unable to open \"%s\"\n", filename);
-  SD_dotload_FILE(in_file);
-  fclose(in_file);
+  SD_dotload_generic(filename);
 
   if(schedule == true){
     xbt_dynar_t computer = NULL;
 
   if(schedule == true){
     xbt_dynar_t computer = NULL;
@@ -151,10 +145,10 @@ xbt_dynar_t SD_dotload_with_sched(const char *filename){
   return NULL;
 }
 
   return NULL;
 }
 
-xbt_dynar_t SD_dotload_FILE(FILE * in_file)
+xbt_dynar_t SD_dotload_generic(const char * filename)
 {
 {
-  xbt_assert0(in_file, "Unable to use a null file descriptor\n");
-  dag_dot = agread(in_file, NIL(Agdisc_t *));
+  xbt_assert0(filename, "Unable to use a null file descriptor\n");
+  dag_dot =  agopen((char*)filename,Agstrictdirected,0);
 
   result = xbt_dynar_new(sizeof(SD_task_t), dot_task_free);
   files = xbt_dict_new();
 
   result = xbt_dynar_new(sizeof(SD_task_t), dot_task_free);
   files = xbt_dict_new();
@@ -237,6 +231,7 @@ xbt_dynar_t SD_dotload_FILE(FILE * in_file)
   if(acyclic_graph_detail(result))
     return result;
   acyclic_graph_detail(result);
   if(acyclic_graph_detail(result))
     return result;
   acyclic_graph_detail(result);
+  free(dag_dot);
   return NULL;
 }
 
   return NULL;
 }