Regress checks out OK with both -O0 and -Os. Both size are with -O0. $ size .libs/libevent-1.4.so.2 text data bss dec hex filename 93735 1088 7084 101907 18e13 .libs/libevent-1.4.so.2
$ size .libs/libevent-1.4.so.2 text data bss dec hex filename 93663 1088 7084 101835 18dcb .libs/libevent-1.4.so.2 Index: libevent/epoll.c =================================================================== --- libevent/epoll.c (revision 504) +++ libevent/epoll.c (working copy) @@ -209,36 +209,23 @@ for (i = 0; i < res; i++) { int what = events[i].events; - struct event *evread = NULL, *evwrite = NULL; + struct event *evread, *evwrite; evep = (struct evepoll *)events[i].data.ptr; + evread = evep->evread; + evwrite = evep->evwrite; - if (what & (EPOLLHUP|EPOLLERR)) { - evread = evep->evread; - evwrite = evep->evwrite; - } else { - if (what & EPOLLIN) { - evread = evep->evread; - } - - if (what & EPOLLOUT) { - evwrite = evep->evwrite; - } - } - - if (!(evread||evwrite)) - continue; - - if (evread != NULL && !(evread->ev_events & EV_PERSIST)) - event_del(evread); - if (evwrite != NULL && evwrite != evread && - !(evwrite->ev_events & EV_PERSIST)) - event_del(evwrite); - - if (evread != NULL) + if (evread && what & (EPOLLIN|EPOLLHUP|EPOLLERR)) { + if (~evread->ev_events & EV_PERSIST) + event_del(evread); event_active(evread, EV_READ, 1); - if (evwrite != NULL) + } + if (evwrite && what & (EPOLLOUT|EPOLLHUP|EPOLLERR)) { + if (~evwrite->ev_events & EV_PERSIST + && evwrite != evread) + event_del(evwrite); event_active(evwrite, EV_WRITE, 1); + } } return (0); _______________________________________________ Libevent-users mailing list Libevent-users@monkey.org http://monkeymail.org/mailman/listinfo/libevent-users