X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/b5ce2867227081a9f4a12b4d4cf977e5880bd9e2..593091105d0841c9000ab6505d0e5453d4dde8a5:/src/xbt/xbt_replay.cpp diff --git a/src/xbt/xbt_replay.cpp b/src/xbt/xbt_replay.cpp index 23be2f5f1b..99fe837d29 100644 --- a/src/xbt/xbt_replay.cpp +++ b/src/xbt/xbt_replay.cpp @@ -54,7 +54,7 @@ bool ReplayReader::get(ReplayAction* action) return not fs->eof(); } -static ReplayAction get_action(char* name) +static ReplayAction* get_action(char* name) { ReplayAction* action; @@ -75,7 +75,7 @@ static ReplayAction get_action(char* name) // if it's for me, I'm done std::string evtname = action->front(); if (evtname.compare(name) == 0) { - return *action; + return action; } else { // Else, I have to store it for the relevant colleague std::queue* otherqueue = nullptr; @@ -94,10 +94,10 @@ static ReplayAction get_action(char* name) // Get something from my queue and return it action = myqueue->front(); myqueue->pop(); - return *action; + return action; } - return ReplayAction(); + return nullptr; } static void handle_action(ReplayAction& action) @@ -120,10 +120,11 @@ int replay_runner(int argc, char* argv[]) { if (simgrid::xbt::action_fs) { // A unique trace file while (true) { - simgrid::xbt::ReplayAction evt(simgrid::xbt::get_action(argv[0])); - if (evt.empty()) + simgrid::xbt::ReplayAction* evt = simgrid::xbt::get_action(argv[0]); + if (!evt) break; - simgrid::xbt::handle_action(evt); + simgrid::xbt::handle_action(*evt); + delete evt; } if (action_queues.find(std::string(argv[0])) != action_queues.end()) { std::queue* myqueue = action_queues.at(std::string(argv[0]));