Skip to content

Commit 8abf6b4

Browse files
committed
eloop: total events to listen to is nfds, not nevents
Only important for kqueue when there are only signals and timeouts in play.
1 parent 0f4b283 commit 8abf6b4

File tree

1 file changed

+8
-5
lines changed

1 file changed

+8
-5
lines changed

src/eloop.c

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -747,8 +747,11 @@ eloop_signal_set_cb(struct eloop *eloop, const int *signals, size_t nsignals,
747747
EV_SET(ke++, (uintptr_t)eloop->signals[i], EVFILT_SIGNAL,
748748
EV_ADD, 0, 0, NULL);
749749
}
750-
if (i != 0 && _kevent(eloop->fd, kes, i, NULL, 0, NULL) == -1)
751-
error = -1;
750+
if (i != 0) {
751+
if (_kevent(eloop->fd, kes, i, NULL, 0, NULL) == -1)
752+
error = -1;
753+
eloop->events_need_setup = true;
754+
}
752755
out:
753756
free(kes);
754757
#endif
@@ -883,7 +886,7 @@ eloop_run_kqueue(struct eloop *eloop, const struct timespec *ts)
883886
struct eloop_event *e;
884887
unsigned short events;
885888

886-
n = _kevent(eloop->fd, NULL, 0, eloop->fds, eloop->nevents, ts);
889+
n = _kevent(eloop->fd, NULL, 0, eloop->fds, eloop->nfds, ts);
887890
if (n == -1)
888891
return -1;
889892

@@ -938,7 +941,7 @@ eloop_run_epoll(struct eloop *eloop, const struct timespec *ts)
938941
} else
939942
timeout = -1;
940943

941-
n = epoll_pwait(eloop->fd, eloop->fds, (int)eloop->nevents, timeout,
944+
n = epoll_pwait(eloop->fd, eloop->fds, (int)eloop->nfds, timeout,
942945
&eloop->sigset);
943946
if (n == -1)
944947
return -1;
@@ -973,7 +976,7 @@ eloop_run_ppoll(struct eloop *eloop, const struct timespec *ts)
973976
struct pollfd *pfd;
974977
unsigned short events;
975978

976-
n = ppoll(eloop->fds, (nfds_t)eloop->nevents, ts, &eloop->sigset);
979+
n = ppoll(eloop->fds, (nfds_t)eloop->nfds, ts, &eloop->sigset);
977980
if (n == -1 || n == 0)
978981
return n;
979982

0 commit comments

Comments
 (0)