From bb914ed9af5f509f80f72c289178c0e467864aed Mon Sep 17 00:00:00 2001 From: Niels Provos Date: Mon, 25 Feb 2008 07:34:07 +0000 Subject: [PATCH] do not insert event into list when evsel->add fails svn:r660 --- ChangeLog | 1 + event.c | 12 ++++++++---- 2 files changed, 9 insertions(+), 4 deletions(-) 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);