From 5ab33944cd7a978c9a30ee6823bdf58e90c0abdb Mon Sep 17 00:00:00 2001 From: Olivier Houchard Date: Tue, 11 Sep 2018 14:44:51 +0200 Subject: [PATCH] BUG/MAJOR: kqueue: Don't reset the changes number by accident. In _update_fd(), if the fd wasn't polled, and we don't want it to be polled, we just returned 0, however, we should return changes instead, or all previous changes will be lost. This should be backported to 1.8. --- src/ev_kqueue.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ev_kqueue.c b/src/ev_kqueue.c index 087a07e783..e2f04f7025 100644 --- a/src/ev_kqueue.c +++ b/src/ev_kqueue.c @@ -44,7 +44,7 @@ static int _update_fd(int fd, int start) if (!(fdtab[fd].thread_mask & tid_bit) || !(en & FD_EV_POLLED_RW)) { if (!(polled_mask[fd] & tid_bit)) { /* fd was not watched, it's still not */ - return 0; + return changes; } /* fd totally removed from poll list */ EV_SET(&kev[changes++], fd, EVFILT_READ, EV_DELETE, 0, 0, NULL); -- 2.47.3