diff --git a/src/system/kernel/events/wait_for_objects.cpp b/src/system/kernel/events/wait_for_objects.cpp index 549516bad5..d142a61931 100644 --- a/src/system/kernel/events/wait_for_objects.cpp +++ b/src/system/kernel/events/wait_for_objects.cpp @@ -682,7 +682,6 @@ common_wait_for_objects(object_wait_info* infos, int numInfos, uint32 flags, infos[i].events |= B_EVENT_INVALID | B_EVENT_ERROR | B_EVENT_DISCONNECTED; sync->set[i].selected_events = infos[i].events; sync->set[i].events = 0; - infos[i].events = 0; if (select_object(type, object, sync->set + i, kernel) != B_OK) { // If the object returned events as well as an error, ignore the error. @@ -705,7 +704,6 @@ common_wait_for_objects(object_wait_info* infos, int numInfos, uint32 flags, for (int i = 0; i < numInfos; i++) { uint16 type = infos[i].type; - if ((infos[i].events & B_EVENT_INVALID) == 0) deselect_object(type, infos[i].object, sync->set + i, kernel); } @@ -722,6 +720,8 @@ common_wait_for_objects(object_wait_info* infos, int numInfos, uint32 flags, } else { // B_INTERRUPTED, B_TIMED_OUT, and B_WOULD_BLOCK count = status; + for (int i = 0; i < numInfos; i++) + infos[i].events = 0; } put_select_sync(sync);