diff --git a/ChangeLog b/ChangeLog index 218f8b8b..755e6b27 100644 --- a/ChangeLog +++ b/ChangeLog @@ -46,6 +46,7 @@ Changes in current version: o detect integer types properly on platforms without stdint.h o udpate documentation of event_loop and event_base_loop; from Tani Hosokawa. o simplify evbuffer by removing orig_buffer + o do not insert event into list when evsel->add fails Changes in 1.4.0: diff --git a/event.c b/event.c index db912d41..e2dc1f9a 100644 --- a/event.c +++ b/event.c @@ -735,14 +735,18 @@ event_add(struct event *ev, struct timeval *tv) if ((ev->ev_events & (EV_READ|EV_WRITE)) && !(ev->ev_flags & (EVLIST_INSERTED|EVLIST_ACTIVE))) { - event_queue_insert(base, ev, EVLIST_INSERTED); + int res = evsel->add(evbase, ev); + if (res != -1) + event_queue_insert(base, ev, EVLIST_INSERTED); - return (evsel->add(evbase, ev)); + return (res); } else if ((ev->ev_events & EV_SIGNAL) && !(ev->ev_flags & EVLIST_SIGNAL)) { - event_queue_insert(base, ev, EVLIST_SIGNAL); + int res = evsel->add(evbase, ev); + if (res != -1) + event_queue_insert(base, ev, EVLIST_SIGNAL); - return (evsel->add(evbase, ev)); + return (res); } return (0);