X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/388b0a8dda7ee5f3e1ea3f9dad8fc50a928436ae..fc843eea56266a45c81d671ba8fcbda11d6099d1:/src/kernel/actor/ActorImpl.cpp diff --git a/src/kernel/actor/ActorImpl.cpp b/src/kernel/actor/ActorImpl.cpp index e1af0469fe..f62d97c7a6 100644 --- a/src/kernel/actor/ActorImpl.cpp +++ b/src/kernel/actor/ActorImpl.cpp @@ -375,10 +375,15 @@ void ActorImpl::resume() activity::ActivityImplPtr ActorImpl::join(const ActorImpl* actor, double timeout) { activity::ActivityImplPtr sleep = this->sleep(timeout); - actor->on_exit->emplace_back([sleep](bool) { + if (actor->context_->wannadie() || actor->context_->to_be_freed()) { if (sleep->surf_action_) sleep->surf_action_->finish(resource::Action::State::FINISHED); - }); + } else { + actor->on_exit->emplace_back([sleep](bool) { + if (sleep->surf_action_) + sleep->surf_action_->finish(resource::Action::State::FINISHED); + }); + } return sleep; }