X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/f9df6a0ce7023e4e22d83bb6c50f27bd21fab329..ba747ecf0be34dbe90a464e78e67700a27642d74:/src/xbt/xbt_replay.cpp diff --git a/src/xbt/xbt_replay.cpp b/src/xbt/xbt_replay.cpp index f17014a34a..d0b7197fb3 100644 --- a/src/xbt/xbt_replay.cpp +++ b/src/xbt/xbt_replay.cpp @@ -109,6 +109,9 @@ void xbt_replay_reader_free(xbt_replay_reader_t *reader) */ void xbt_replay_action_register(const char *action_name, action_fun function) { + if (xbt_action_funs == nullptr) // If the user registers a function before the start + _xbt_replay_action_init(); + char* lowername = str_tolower (action_name); xbt_dict_set(xbt_action_funs, lowername, (void*) function, nullptr); xbt_free(lowername); @@ -147,12 +150,11 @@ void _xbt_replay_action_exit() */ int xbt_replay_action_runner(int argc, char *argv[]) { - int i; if (xbt_action_fp) { // A unique trace file while (true) { char **evt = action_get_action(argv[0]); if (evt == nullptr) - break; + break; char* lowername = str_tolower (evt[1]); action_fun function = (action_fun)xbt_dict_get(xbt_action_funs, lowername); @@ -163,7 +165,7 @@ int xbt_replay_action_runner(int argc, char *argv[]) catch(xbt_ex& e) { xbt_die("Replay error :\n %s", e.what()); } - for (i=0;evt[i]!= nullptr;i++) + for (int i=0;evt[i]!= nullptr;i++) free(evt[i]); free(evt); } @@ -234,7 +236,7 @@ static char **action_get_action(char *name) xbt_dynar_push(otherqueue, &evt); } } - goto todo_done; // end of file reached while searching in vain for more work + // end of file reached while searching in vain for more work } else { // Get something from my queue and return it xbt_dynar_shift(myqueue, &evt);