]> granicus.if.org Git - libevent/commitdiff
Check for Mac OS X 10.4 kqueue bug properly
authorMark Mentovai <mark@chromium.org>
Fri, 8 Jul 2016 13:43:39 +0000 (09:43 -0400)
committerAzat Khuzhin <a3at.mail@gmail.com>
Tue, 12 Jul 2016 17:06:52 +0000 (20:06 +0300)
EV_ERROR is a bit in struct kevent::flags. Other bits may be set too.

Actually we have osx builds on travis-ci, but it uses osx 10.9.5, and we don't
have warnings there, since I guess that there is no OR'ing with previous flag
in case of error, while in 10.12 there is OR.

Fixes: #377
Fixes: #376
Link: https://crbug.com/626534
Link: https://travis-ci.org/libevent/libevent/jobs/141033429
kqueue.c

index 1f41b5a7687cfd7df5ff4e8576ac0e53a98f88c3..a959c58af52b48fdb8bb97891cf24edd786f5135 100644 (file)
--- a/kqueue.c
+++ b/kqueue.c
@@ -154,7 +154,7 @@ kq_init(struct event_base *base)
        if (kevent(kq,
                kqueueop->changes, 1, kqueueop->events, NEVENT, NULL) != 1 ||
            (int)kqueueop->events[0].ident != -1 ||
-           kqueueop->events[0].flags != EV_ERROR) {
+           !(kqueueop->events[0].flags & EV_ERROR)) {
                event_warn("%s: detected broken kqueue; not using.", __func__);
                goto err;
        }