if (not host->is_on()) {
XBT_WARN("Cannot launch process '%s' on failed host '%s'", name.c_str(), host->get_cname());
- return nullptr;
+ std::rethrow_exception(
+ std::make_exception_ptr(simgrid::HostFailureException(XBT_THROW_POINT, "Cannot attach actor on failed host.")));
}
ActorImpl* actor = new ActorImpl(xbt::string(name), host);
if (suspended_) {
XBT_DEBUG("Hey! I'm suspended.");
- xbt_assert(exception_ != nullptr, "Gasp! This exception may be lost by subsequent calls.");
+
+ xbt_assert(exception_ == nullptr, "Gasp! This exception may be lost by subsequent calls.");
suspended_ = false;
suspend(this);
}
return nullptr;
} else {
- return activity::ExecImplPtr(new activity::ExecImpl("suspend", "", nullptr, this->host_))->start(0.0, 1.0, 0.0);
+ return activity::ExecImplPtr(new activity::ExecImpl("suspend", "", this->host_))->start(0.0, 1.0, 0.0);
}
}
if (not host->is_on()) {
XBT_WARN("Cannot launch actor '%s' on failed host '%s'", name.c_str(), host->get_cname());
- return nullptr;
+ std::rethrow_exception(
+ std::make_exception_ptr(simgrid::HostFailureException(XBT_THROW_POINT, "Cannot create actor on failed host.")));
}
ActorImpl* actor = new ActorImpl(simgrid::xbt::string(name), host);