A
lgorithmique
N
umérique
D
istribuée
Public GIT Repository
projects
/
simgrid.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
| inline |
side by side
simplify the way I/O actions are created (CPU style)
[simgrid.git]
/
src
/
kernel
/
activity
/
ActivityImpl.cpp
diff --git
a/src/kernel/activity/ActivityImpl.cpp
b/src/kernel/activity/ActivityImpl.cpp
index
86cd48a
..
1f373dd
100644
(file)
--- a/
src/kernel/activity/ActivityImpl.cpp
+++ b/
src/kernel/activity/ActivityImpl.cpp
@@
-59,7
+59,7
@@
const char* ActivityImpl::get_state_str() const
{
return to_c_str(state_);
}
-
+
bool ActivityImpl::test(actor::ActorImpl* issuer)
{
if (state_ != State::WAITING && state_ != State::RUNNING) {
@@
-140,12
+140,13
@@
void ActivityImpl::wait_any_for(actor::ActorImpl* issuer, const std::vector<Acti
auto* observer = dynamic_cast<kernel::actor::ActivityWaitanySimcall*>(issuer->simcall_.observer_);
xbt_assert(observer != nullptr);
xbt_assert(timeout <= 0.0, "Timeout not implemented for waitany in the model-checker");
- int idx = observer->get_value();
- auto* act = activities[idx];
- act->simcalls_.push_back(&issuer->simcall_);
- observer->set_result(idx);
- act->set_state(State::DONE);
- act->finish();
+ if (int idx = observer->get_value(); idx != -1) {
+ auto* act = activities.at(idx);
+ act->simcalls_.push_back(&issuer->simcall_);
+ observer->set_result(idx);
+ act->set_state(State::DONE);
+ act->finish();
+ }
return;
}