diff --git a/repos/libports/src/lib/libc/poll.cc b/repos/libports/src/lib/libc/poll.cc index 41effddc6..e5cf9a482 100644 --- a/repos/libports/src/lib/libc/poll.cc +++ b/repos/libports/src/lib/libc/poll.cc @@ -89,10 +89,10 @@ poll(struct pollfd fds[], nfds_t nfds, int timeout) fds[i].revents = 0; if (fd == -1) continue; - if (FD_ISSET(fd, &readfds)) { + if ((fds[i].events & POLLIN) && FD_ISSET(fd, &readfds)) { fds[i].revents |= POLLIN; } - if (FD_ISSET(fd, &writefds)) { + if ((fds[i].events & POLLOUT) && FD_ISSET(fd, &writefds)) { fds[i].revents |= POLLOUT; } if (FD_ISSET(fd, &exceptfds)) {