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 /poll.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 'poll.c')
-rw-r--r-- | poll.c | 22 |
1 files changed, 21 insertions, 1 deletions
@@ -74,6 +74,7 @@ int poll_add (void *, struct event *); int poll_del (void *, struct event *); int poll_recalc (struct event_base *, void *, int); int poll_dispatch (struct event_base *, void *, struct timeval *); +void poll_dealloc (void *); const struct eventop pollops = { "poll", @@ -81,7 +82,8 @@ const struct eventop pollops = { poll_add, poll_del, poll_recalc, - poll_dispatch + poll_dispatch, + poll_dealloc }; void * @@ -355,3 +357,21 @@ poll_del(void *arg, struct event *ev) poll_check_ok(pop); return (0); } + +void +poll_dealloc(void *arg) +{ + struct pollop *pop = arg; + + if (pop->event_set) + free(pop->event_set); + if (pop->event_r_back) + free(pop->event_r_back); + if (pop->event_w_back) + free(pop->event_w_back); + if (pop->idxplus1_by_fd) + free(pop->idxplus1_by_fd); + + memset(pop, 0, sizeof(struct pollop)); + free(pop); +} |