diff options
author | Přemysl Janouch <p.janouch@gmail.com> | 2014-09-24 19:03:45 +0200 |
---|---|---|
committer | Přemysl Janouch <p.janouch@gmail.com> | 2014-09-24 19:03:45 +0200 |
commit | 21cab71e75e7dd0f7d91e28e310e8b59af304aa6 (patch) | |
tree | a3f2e4f19eba85ad2f6c4227505ef6109c71f7e7 /utils.c | |
parent | 89edba14f0dfb74f0694a20724405743ece00017 (diff) | |
download | ponymap-21cab71e75e7dd0f7d91e28e310e8b59af304aa6.tar.gz ponymap-21cab71e75e7dd0f7d91e28e310e8b59af304aa6.tar.xz ponymap-21cab71e75e7dd0f7d91e28e310e8b59af304aa6.zip |
Fix the epoll poller
Setting the fd to -1 broke poller_remove_from_dispatch().
Diffstat (limited to 'utils.c')
-rw-r--r-- | utils.c | 3 |
1 files changed, 2 insertions, 1 deletions
@@ -873,6 +873,7 @@ struct poller_fd int fd; ///< Our file descriptor short events; ///< The poll() events we registered for + bool closed; ///< Whether fd has been closed already poller_fd_fn dispatcher; ///< Event dispatcher void *user_data; ///< User data @@ -1194,7 +1195,7 @@ poller_remove_at_index (struct poller *self, size_t index) fd->index = -1; poller_remove_from_dispatch (self, fd); - if (fd->fd != -1) + if (!fd->closed) hard_assert (epoll_ctl (self->epoll_fd, EPOLL_CTL_DEL, fd->fd, (void *) "") != -1); |