From ee9d7979060afc44aab46ddcaab5bb87c2e5e9f0 Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Sat, 19 Sep 2015 08:16:30 -0600 Subject: [PATCH] fix file descriptor handling for poll() without epoll() This problem could cause busy-waiting after a network connection on Android, for example. --- racket/src/racket/src/thread.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/racket/src/racket/src/thread.c b/racket/src/racket/src/thread.c index b31d01f414..48fe553724 100644 --- a/racket/src/racket/src/thread.c +++ b/racket/src/racket/src/thread.c @@ -4079,7 +4079,7 @@ static int check_fd_semaphores() hit = 1; SCHEME_VEC_ELS(v)[0] = scheme_false; } - pfd[i].revents -= (pfd[i].revents & POLLIN); + pfd[i].events -= (pfd[i].events & POLLIN); } if (pfd[i].revents & (POLLOUT | POLLHUP | POLLERR)) { s = SCHEME_VEC_ELS(v)[1]; @@ -4088,7 +4088,7 @@ static int check_fd_semaphores() hit = 1; SCHEME_VEC_ELS(v)[1] = scheme_false; } - pfd[i].revents -= (pfd[i].revents & POLLOUT); + pfd[i].events -= (pfd[i].events & POLLOUT); } if (SCHEME_FALSEP(SCHEME_VEC_ELS(v)[0]) && SCHEME_FALSEP(SCHEME_VEC_ELS(v)[1]))