fix a memory leak.
authorRussell Bryant <russell@russellbryant.com>
Tue, 24 Jun 2008 02:16:59 +0000 (02:16 +0000)
committerRussell Bryant <russell@russellbryant.com>
Tue, 24 Jun 2008 02:16:59 +0000 (02:16 +0000)
(inspired by, and potentially fixes issue #12917)

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@124798 65c4cc65-6c06-0410-ace0-fbb531ad65f3

res/res_timing_pthread.c

index cb6bce4..f0a1d0e 100644 (file)
@@ -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) {