Fix ref leak in threadpool.c
authorKinsey Moore <kmoore@digium.com>
Thu, 7 Mar 2013 00:05:16 +0000 (00:05 +0000)
committerKinsey Moore <kmoore@digium.com>
Thu, 7 Mar 2013 00:05:16 +0000 (00:05 +0000)
If ast_threadpool_set_size with a size equal to the current size, a
reference to a set_size_data structure would be leaked.

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

main/threadpool.c

index 1bf6003..f6755e3 100644 (file)
@@ -792,7 +792,7 @@ static struct set_size_data *set_size_data_alloc(struct ast_threadpool *pool,
  */
 static int queued_set_size(void *data)
 {
-       struct set_size_data *ssd = data;
+       RAII_VAR(struct set_size_data *, ssd, data, ao2_cleanup);
        struct ast_threadpool *pool = ssd->pool;
        unsigned int num_threads = ssd->size;
 
@@ -813,7 +813,6 @@ static int queued_set_size(void *data)
        }
 
        threadpool_send_state_changed(pool);
-       ao2_ref(ssd, -1);
        return 0;
 }