Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
[xbt] Fix a memory leak in the promela parser
[simgrid.git] / src / xbt / automaton / automatonparse_promela.c
index d62c20d..64d5813 100644 (file)
@@ -19,8 +19,8 @@ char* state_id_src;
 
 static void new_state(char* id, int src){
 
-  char* id_state = xbt_strdup(id);
-  char* first_part = strtok(id,"_");
+  char* id_copy = xbt_strdup(id);
+  char* first_part = strtok(id_copy,"_");
   int type = 0 ; // -1=initial state; 0=intermediate state; 1=final state
 
   if(strcmp(first_part,"accept")==0){
@@ -31,18 +31,19 @@ static void new_state(char* id, int src){
       type = -1;
     }
   }
+  free(id_copy);
 
   xbt_automaton_state_t state = NULL;
-  state = xbt_automaton_state_exists(parsed_automaton, id_state);
+  state = xbt_automaton_state_exists(parsed_automaton, id);
   if(state == NULL){
-    state = xbt_automaton_state_new(parsed_automaton, type, id_state);
+    state = xbt_automaton_state_new(parsed_automaton, type, id);
   }
 
   if(type==-1)
     parsed_automaton->current_state = state;
 
   if(src)
-    state_id_src = xbt_strdup(id_state);
+    state_id_src = xbt_strdup(id);
     
 }