- for (i = idle_pfd_index + 1; idle_pfd_index < active_fd_count;
- i++) {
- struct pollfd swap_pfd;
- struct pollfd *idle_pfd = &events->wait.events[idle_pfd_index];
- struct pollfd *current_pfd = &events->wait.events[i];
-
- if (idle_pfd->revents != 0) {
- swap_pfd = *current_pfd;
- *current_pfd = *idle_pfd;
- *idle_pfd = swap_pfd;
- idle_pfd_index++;
+ while (consecutive_entries != active_fd_count) {
+ struct pollfd *current = &events->wait.events[pos];
+ struct pollfd idle_entry;
+
+ if (current->revents != 0) {
+ consecutive_entries++;
+ pos++;
+ continue;