diff options
author | Russell Bryant <russell@russellbryant.com> | 2008-06-24 02:16:59 +0000 |
---|---|---|
committer | Russell Bryant <russell@russellbryant.com> | 2008-06-24 02:16:59 +0000 |
commit | ed289fd3aad290c3f4d2e7cd9cfa6808a1c20558 (patch) | |
tree | eabba9e78ed09558105184f6c9f5334c68b752f1 /res | |
parent | 5ba60658a6bd81c1e227bc9b7ddbc090a5ce2f43 (diff) |
fix a memory leak.
(inspired by, and potentially fixes issue #12917)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@124798 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'res')
-rw-r--r-- | res/res_timing_pthread.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/res/res_timing_pthread.c b/res/res_timing_pthread.c index cb6bce439..f0a1d0e98 100644 --- a/res/res_timing_pthread.c +++ b/res/res_timing_pthread.c @@ -102,6 +102,7 @@ static struct { static int pthread_timer_open(void) { struct pthread_timer *timer; + int fd; if (!(timer = ao2_alloc(sizeof(*timer), pthread_timer_destructor))) { errno = ENOMEM; @@ -125,7 +126,11 @@ static int pthread_timer_open(void) ao2_link(pthread_timers, timer); ao2_unlock(pthread_timers); - return timer->pipe[PIPE_READ]; + fd = timer->pipe[PIPE_READ]; + + ao2_ref(timer, -1); + + return fd; } static void pthread_timer_close(int handle) @@ -326,7 +331,6 @@ static int check_timer(struct pthread_timer *timer) static void read_pipe(int rd_fd, unsigned int quantity, int clear) { - ast_assert(quantity || clear); if (!quantity && clear) { |