X-Git-Url: http://bilbo.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/bbc57f5380f908b965ad6b3e0b47d374b739a526..2cf13759ba1696d88f5ff86afee5324f30ccdbfc:/src/simix/smx_io.cpp diff --git a/src/simix/smx_io.cpp b/src/simix/smx_io.cpp index 2898422e40..62e482f7c2 100644 --- a/src/simix/smx_io.cpp +++ b/src/simix/smx_io.cpp @@ -47,17 +47,17 @@ void SIMIX_io_finish(smx_activity_t synchro) SMX_EXCEPTION(simcall->issuer, io_error, 0, "IO failed"); break; case SIMIX_CANCELED: - SMX_EXCEPTION(simcall->issuer, cancel_error, 0, "Canceled"); + simcall->issuer->exception_ = + std::make_exception_ptr(simgrid::CancelException(XBT_THROW_POINT, "I/O Canceled")); break; default: xbt_die("Internal error in SIMIX_io_finish: unexpected synchro state %d", static_cast(synchro->state_)); } - if (simcall->issuer->host_->is_off()) { - simcall->issuer->context_->iwannadie = true; - } - simcall->issuer->waiting_synchro = nullptr; - SIMIX_simcall_answer(simcall); + if (simcall->issuer->get_host()->is_on()) + SIMIX_simcall_answer(simcall); + else + simcall->issuer->context_->iwannadie = true; } }