Index: src/OFEpollKernelEventObserver.m ================================================================== --- src/OFEpollKernelEventObserver.m +++ src/OFEpollKernelEventObserver.m @@ -197,21 +197,18 @@ if (events < 0) @throw [OFObserveFailedException exceptionWithObserver: self errNo: errno]; for (int i = 0; i < events; i++) { - if (eventList[i].data.ptr == nullObject) { - char buffer; - - assert(eventList[i].events == EPOLLIN); - OF_ENSURE(read(_cancelFD[0], &buffer, 1) == 1); - - continue; - } - if (eventList[i].events & EPOLLIN) { void *pool = objc_autoreleasePoolPush(); + + if (eventList[i].data.ptr == nullObject) { + char buffer; + OF_ENSURE(read(_cancelFD[0], &buffer, 1) == 1); + continue; + } if ([_delegate respondsToSelector: @selector(objectIsReadyForReading:)]) [_delegate objectIsReadyForReading: eventList[i].data.ptr]; @@ -227,10 +224,8 @@ [_delegate objectIsReadyForWriting: eventList[i].data.ptr]; objc_autoreleasePoolPop(pool); } - - assert((eventList[i].events & ~(EPOLLIN | EPOLLOUT)) == 0); } } @end