On Wed, 2020-10-07 at 15:20 +0300, Roman Bolshakov wrote:
for (i = 0; i < numpollfds; i++) {
- if (fds[i].revents & (POLLIN | POLLHUP | POLLERR)) {
+ if (fds[i].revents & (POLLIN | POLLHUP | POLLERR |
+# ifdef __APPLE__
+ /*
+ * poll() on /dev/null will return POLLNVAL
+ */
+ POLLNVAL)) {
+# else
+ 0)) {
+# endif
The fix seems legit, but having a preprocessor directive in the
middle of a function call doesn't look great. Can you rewrite this
along the lines of
for (i = 0; i < numpollfds; i++) {
short revents = POLLIN | POLLHUP | POLLERR;
# ifdef __APPLE__
/* On macOS, poll() on devices will return POLLNVAL */
revents |= POLLNVAL;
# endif
if (fds[i].revents & revents) {
/* ... */
}
}
please?
--
Andrea Bolognani / Red Hat / Virtualization