From: Nick Mathewson Date: Fri, 30 Oct 2009 22:43:53 +0000 (+0000) Subject: Remove some duplicate code in kqueue.c and fix a small memory leak. X-Git-Tag: release-2.0.3-alpha~61 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=315fde1a70da1c1e4b9565f38f52680e23114a84;p=libevent Remove some duplicate code in kqueue.c and fix a small memory leak. svn:r1483 --- diff --git a/kqueue.c b/kqueue.c index 86f58780..335208d3 100644 --- a/kqueue.c +++ b/kqueue.c @@ -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)