Index: mojo/edk/system/core.cc |
diff --git a/mojo/edk/system/core.cc b/mojo/edk/system/core.cc |
index d38457c4c1adceabc275c125ea6a3fc5e6338e13..f077c7585b8a2626e8aebfea0ad8df678f54ba25 100644 |
--- a/mojo/edk/system/core.cc |
+++ b/mojo/edk/system/core.cc |
@@ -257,17 +257,18 @@ MojoResult Core::WaitMany(UserPointer<const MojoHandle> handles, |
MojoDeadline deadline, |
UserPointer<uint32_t> result_index, |
UserPointer<MojoHandleSignalsState> signals_states) { |
- if (num_handles < 1) |
- return MOJO_RESULT_INVALID_ARGUMENT; |
if (num_handles > GetConfiguration().max_wait_many_num_handles) |
return MOJO_RESULT_RESOURCE_EXHAUSTED; |
+ uint64_t index = static_cast<uint64_t>(-1); |
+ if (num_handles == 0u) |
+ return WaitManyInternal(nullptr, nullptr, 0u, deadline, &index, nullptr); |
+ |
UserPointer<const MojoHandle>::Reader handles_reader(handles, num_handles); |
UserPointer<const MojoHandleSignals>::Reader signals_reader(signals, |
num_handles); |
- uint64_t index = static_cast<uint64_t>(-1); |
MojoResult result; |
- if (signals_states.IsNull()) { |
+ if (signals_states.IsNull() || num_handles == 0u) { |
result = WaitManyInternal(handles_reader.GetPointer(), |
signals_reader.GetPointer(), num_handles, |
deadline, &index, nullptr); |
@@ -842,7 +843,6 @@ MojoResult Core::WaitManyInternal(const MojoHandle* handles, |
MojoDeadline deadline, |
uint64_t* result_index, |
HandleSignalsState* signals_states) { |
- DCHECK_GT(num_handles, 0u); |
DCHECK_EQ(*result_index, static_cast<uint64_t>(-1)); |
DispatcherVector dispatchers; |