XBT_DEBUG("Wait condition %p", this);
xbt_assert(std::isfinite(timeout), "timeout is not finite!");
- /* If there is a mutex unlock it */
- if (mutex != nullptr) {
- auto* owner = mutex->get_owner();
- xbt_assert(owner == issuer,
- "Actor %s cannot wait on ConditionVariable %p since it does not own the provided mutex %p (which is "
- "owned by %s).",
- issuer->get_cname(), this, mutex, (owner == nullptr ? "nobody" : owner->get_cname()));
- mutex_ = mutex;
- mutex->unlock(issuer);
- }
+ /* Unlock the provided mutex (the simcall observer ensures that one is provided, no need to check) */
+ auto* owner = mutex->get_owner();
+ xbt_assert(owner == issuer,
+ "Actor %s cannot wait on ConditionVariable %p since it does not own the provided mutex %p (which is "
+ "owned by %s).",
+ issuer->get_cname(), this, mutex, (owner == nullptr ? "nobody" : owner->get_cname()));
+ mutex_ = mutex;
+ mutex->unlock(issuer);
SynchroImplPtr synchro(new SynchroImpl([this, issuer]() {
this->remove_sleeping_actor(*issuer);