diff options
author | Nick Mathewson <nickm@torproject.org> | 2009-10-30 22:43:53 +0000 |
---|---|---|
committer | Nick Mathewson <nickm@torproject.org> | 2009-10-30 22:43:53 +0000 |
commit | 315fde1a70da1c1e4b9565f38f52680e23114a84 (patch) | |
tree | 4e1c6c6e5f1cb576d02939cfdb30c2aba425e3b0 /kqueue.c | |
parent | 96c6956e0247f615d8afd25d79586dfa5b478ef0 (diff) | |
download | libevent-315fde1a70da1c1e4b9565f38f52680e23114a84.tar.gz |
Remove some duplicate code in kqueue.c and fix a small memory leak.
svn:r1483
Diffstat (limited to 'kqueue.c')
-rw-r--r-- | kqueue.c | 25 |
1 files changed, 15 insertions, 10 deletions
@@ -79,6 +79,8 @@ struct kqop { pid_t pid; }; +static void kqop_free(struct kqop *kqop); + static void *kq_init (struct event_base *); static int kq_add (struct event_base *, int, short, short, void *); static int kq_del (struct event_base *, int, short, short, void *); @@ -167,13 +169,9 @@ kq_init(struct event_base *base) return (kqueueop); err: - if (kqueueop->changes) - mm_free(kqueueop->changes); - if (kqueueop->pend_changes) - mm_free(kqueueop->pend_changes); - if (kq >= 0) - close(kq); - mm_free(kqueueop); + if (kqueueop) + kqop_free(kqueueop); + return (NULL); } @@ -390,12 +388,12 @@ kq_del(struct event_base *base, int fd, short old, short events, void *p) } static void -kq_dealloc(struct event_base *base) +kqop_free(struct kqop *kqop) { - struct kqop *kqop = base->evbase; - if (kqop->changes) mm_free(kqop->changes); + if (kqop->pend_changes) + mm_free(kqop->pend_changes); if (kqop->events) mm_free(kqop->events); if (kqop->kq >= 0 && kqop->pid == getpid()) @@ -404,6 +402,13 @@ kq_dealloc(struct event_base *base) mm_free(kqop); } +static void +kq_dealloc(struct event_base *base) +{ + struct kqop *kqop = base->evbase; + kqop_free(kqop); +} + /* signal handling */ static int kq_sig_add(struct event_base *base, int nsignal, short old, short events, void *p) |