diff options
Diffstat (limited to 'src/corelib/kernel/qpoll.cpp')
-rw-r--r-- | src/corelib/kernel/qpoll.cpp | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/src/corelib/kernel/qpoll.cpp b/src/corelib/kernel/qpoll.cpp index eba5664f4a..58fb0234b4 100644 --- a/src/corelib/kernel/qpoll.cpp +++ b/src/corelib/kernel/qpoll.cpp @@ -54,7 +54,7 @@ static inline void qt_poll_examine_ready_read(struct pollfd &pfd) int res; char data; - EINTR_LOOP(res, ::recv(pfd.fd, &data, sizeof(data), MSG_PEEK)); + QT_EINTR_LOOP(res, ::recv(pfd.fd, &data, sizeof(data), MSG_PEEK)); const int error = (res < 0) ? errno : 0; if (res == 0) { @@ -109,7 +109,7 @@ static inline bool qt_poll_is_bad_fd(int fd) #endif int ret; - EINTR_LOOP(ret, fcntl(fd, F_GETFD)); + QT_EINTR_LOOP(ret, fcntl(fd, F_GETFD)); return (ret == -1 && errno == EBADF); } @@ -156,6 +156,11 @@ int qt_poll(struct pollfd *fds, nfds_t nfds, const struct timespec *timeout_ts) if (fds[i].fd < 0) continue; + if (fds[i].fd > FD_SETSIZE) { + errno = EINVAL; + return -1; + } + if (fds[i].events & QT_POLL_EVENTS_MASK) continue; |