X-Git-Url: http://bilbo.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/2a4e0832d58c384b44501fea364c650327b830f9..2cf13759ba1696d88f5ff86afee5324f30ccdbfc:/src/simix/smx_io.cpp diff --git a/src/simix/smx_io.cpp b/src/simix/smx_io.cpp index 24947e8600..62e482f7c2 100644 --- a/src/simix/smx_io.cpp +++ b/src/simix/smx_io.cpp @@ -47,16 +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_)); } simcall->issuer->waiting_synchro = nullptr; - if (simcall->issuer->host_->is_off()) - simcall->issuer->context_->iwannadie = true; - else + if (simcall->issuer->get_host()->is_on()) SIMIX_simcall_answer(simcall); + else + simcall->issuer->context_->iwannadie = true; } }