diff options
author | Niels Provos <provos@gmail.com> | 2006-03-28 04:40:54 +0000 |
---|---|---|
committer | Niels Provos <provos@gmail.com> | 2006-03-28 04:40:54 +0000 |
commit | 2e8051f593abd20b961e85c3f99dfa0ac0ee375d (patch) | |
tree | b842366c26f182d98130bb266aaa632242416345 /devpoll.c | |
parent | 571ac95430c344d4688c28adaa8aa53956cd12a7 (diff) | |
download | libevent-2e8051f593abd20b961e85c3f99dfa0ac0ee375d.tar.gz |
introduce a way to free the base from Nick Mathewson <nickm@freehaven.net>
svn:r210
Diffstat (limited to 'devpoll.c')
-rw-r--r-- | devpoll.c | 22 |
1 files changed, 21 insertions, 1 deletions
@@ -76,6 +76,7 @@ int devpoll_add (void *, struct event *); int devpoll_del (void *, struct event *); int devpoll_recalc (struct event_base *, void *, int); int devpoll_dispatch (struct event_base *, void *, struct timeval *); +void devpoll_dealloc (void *); struct eventop devpollops = { "devpoll", @@ -83,7 +84,8 @@ struct eventop devpollops = { devpoll_add, devpoll_del, devpoll_recalc, - devpoll_dispatch + devpoll_dispatch, + devpoll_dealloc }; #define NEVENT 32000 @@ -401,3 +403,21 @@ devpoll_del(void *arg, struct event *ev) return (0); } + +void +devpoll_dealloc(void *arg) +{ + struct devpollop *devpollop = arg; + + if (devpollop->fds) + free(devpollop->fds); + if (devpollop->events) + free(devpollop->events); + if (devpollop->changes) + free(devpollop->changes); + if (devpollop->dpfd >= 0) + close(devpollop->dpfd); + + memset(devpollop, 0, sizeof(struct devpollop)); + free(devpollop); +} |