From 6fdd1cc92413cd4c176f51b41ba2f723ee5ba50f Mon Sep 17 00:00:00 2001 From: Gabriel Corona Date: Wed, 23 Mar 2016 10:24:11 +0100 Subject: [PATCH] [xbt] Fix a memory leak in the promela parser --- src/xbt/automaton/automatonparse_promela.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/xbt/automaton/automatonparse_promela.c b/src/xbt/automaton/automatonparse_promela.c index d62c20dabd..64d5813472 100644 --- a/src/xbt/automaton/automatonparse_promela.c +++ b/src/xbt/automaton/automatonparse_promela.c @@ -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); } -- 2.20.1