]> granicus.if.org Git - libevent/commitdiff
updating a timeout might corrupt RB tree. Remove before changing time.
authorNiels Provos <provos@gmail.com>
Mon, 20 May 2002 21:47:04 +0000 (21:47 +0000)
committerNiels Provos <provos@gmail.com>
Mon, 20 May 2002 21:47:04 +0000 (21:47 +0000)
svn:r24

event.c

diff --git a/event.c b/event.c
index 2d558ae9e4d8da99f3ef0a110152a573d3df63d3..4802f3aaa76209d78d2636028963837ce10c1ab8 100644 (file)
--- a/event.c
+++ b/event.c
@@ -281,14 +281,15 @@ event_add(struct event *ev, struct timeval *tv)
        if (tv != NULL) {
                struct timeval now;
 
+               if (ev->ev_flags & EVLIST_TIMEOUT)
+                       event_queue_remove(ev, EVLIST_TIMEOUT);
+
                gettimeofday(&now, NULL);
                timeradd(&now, tv, &ev->ev_timeout);
 
                LOG_DBG((LOG_MISC, 55,
                         "event_add: timeout in %d seconds, call %p",
                         tv->tv_sec, ev->ev_callback));
-               if (ev->ev_flags & EVLIST_TIMEOUT)
-                       event_queue_remove(ev, EVLIST_TIMEOUT);
 
                event_queue_insert(ev, EVLIST_TIMEOUT);
        }