From 1081bca2a802ef49d0f52d5613c50b016e0136cd Mon Sep 17 00:00:00 2001 From: Iskren Chernev Date: Sun, 13 Mar 2011 21:05:14 +0200 Subject: [PATCH] Close timer file descriptors in event loop on remove and failure. When the timer is removed the corresponding fd is closed. This should automatically remove it from the epoll set. --- wayland/event-loop.c | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/wayland/event-loop.c b/wayland/event-loop.c index f05dd5b..afdb1d8 100644 --- a/wayland/event-loop.c +++ b/wayland/event-loop.c @@ -171,13 +171,10 @@ wl_event_source_timer_remove(struct wl_event_source *source) { struct wl_event_source_timer *timer_source = (struct wl_event_source_timer *) source; - struct wl_event_loop *loop = source->loop; - int fd; - fd = timer_source->fd; + close(timer_source->fd); free(source); - - return epoll_ctl(loop->epoll_fd, EPOLL_CTL_DEL, fd, NULL); + return 0; } struct wl_event_source_interface timer_source_interface = { @@ -215,6 +212,7 @@ wl_event_loop_add_timer(struct wl_event_loop *loop, ep.data.ptr = source; if (epoll_ctl(loop->epoll_fd, EPOLL_CTL_ADD, source->fd, &ep) < 0) { + close(source->fd); free(source); return NULL; } -- 2.7.4