@@ -80,11 +80,11 @@ break; } } if (!found) { - struct pollfd p = { fd, events | POLLERR, 0 }; + struct pollfd p = { fd, events, 0 }; [_FDs addItem: &p]; } } - (void)OF_removeFileDescriptor: (int)fd @@ -95,11 +95,11 @@ for (i = 0; i < nFDs; i++) { if (FDs[i].fd == fd) { FDs[i].events &= ~events; - if ((FDs[i].events & ~POLLERR) == 0) + if (FDs[i].events == 0) [_FDs removeItemAtIndex: i]; break; } } @@ -169,31 +169,22 @@ objc_autoreleasePoolPop(pool); continue; } if ([_delegate respondsToSelector: - @selector(streamIsReadyForReading:)]) - [_delegate streamIsReadyForReading: - _FDToStream[FDs[i].fd]]; + @selector(objectIsReadyForReading:)]) + [_delegate objectIsReadyForReading: + _FDToObject[FDs[i].fd]]; realEvents++; } if (FDs[i].revents & POLLOUT) { if ([_delegate respondsToSelector: - @selector(streamIsReadyForWriting:)]) - [_delegate streamIsReadyForWriting: - _FDToStream[FDs[i].fd]]; - - realEvents++; - } - - if (FDs[i].revents & POLLERR) { - if ([_delegate respondsToSelector: - @selector(streamDidReceiveException:)]) - [_delegate streamDidReceiveException: - _FDToStream[FDs[i].fd]]; + @selector(objectIsReadyForWriting:)]) + [_delegate objectIsReadyForWriting: + _FDToObject[FDs[i].fd]]; realEvents++; } FDs[i].revents = 0;