--- libev/ev_epoll.c 2007/11/04 15:58:50 1.15 +++ libev/ev_epoll.c 2007/11/04 22:03:17 1.18 @@ -42,7 +42,8 @@ (nev & EV_READ ? EPOLLIN : 0) | (nev & EV_WRITE ? EPOLLOUT : 0); - epoll_ctl (epoll_fd, mode, fd, &ev); + if (epoll_ctl (epoll_fd, mode, fd, &ev)) + fd_kill (EV_A_ fd); } static void @@ -102,11 +103,9 @@ static void epoll_fork (EV_P) { - int fd; - epoll_fd = epoll_create (256); fcntl (epoll_fd, F_SETFD, FD_CLOEXEC); - fd_rearm_all (); + fd_rearm_all (EV_A); }