X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/2757e5aa6f52b8ff53aec3ad5e5ca5c412fb2813..72b7977026be2ec4497220e10118d392a76b310b:/src/s4u/s4u_Actor.cpp diff --git a/src/s4u/s4u_Actor.cpp b/src/s4u/s4u_Actor.cpp index 01c2763203..6e49f993a6 100644 --- a/src/s4u/s4u_Actor.cpp +++ b/src/s4u/s4u_Actor.cpp @@ -101,22 +101,22 @@ void Actor::set_auto_restart(bool autorestart) }); } -void Actor::on_exit(int_f_pvoid_pvoid_t fun, - void* data) /* deprecated: cleanup SIMIX_process_on_exit: change prototype of second parameter and - remove the last one */ +void Actor::on_exit(int_f_pvoid_pvoid_t fun, void* data) /* deprecated */ { - simix::simcall([this, fun, data] { SIMIX_process_on_exit(pimpl_, fun, data); }); + on_exit([fun, data](bool failed) { + intptr_t status = failed ? SMX_EXIT_FAILURE : SMX_EXIT_SUCCESS; + fun(reinterpret_cast(status), data); + }); } void Actor::on_exit(const std::function& fun, void* data) /* deprecated */ { - on_exit([fun, data](bool exit) { fun(exit, data); }); + on_exit([fun, data](bool failed) { fun(failed ? SMX_EXIT_FAILURE : SMX_EXIT_SUCCESS, data); }); } void Actor::on_exit(const std::function& fun) const { - simix::simcall( - [this, fun] { SIMIX_process_on_exit(pimpl_, [fun](int a, void* /*data*/) { fun(a != 0); }, nullptr); }); + simix::simcall([this, &fun] { SIMIX_process_on_exit(pimpl_, fun); }); } void Actor::migrate(Host* new_host)