[vlc-devel] [PATCH] picture_pool: fix refcount leak if pic_lock fails.

Thomas Guillem thomas at gllm.fr
Fri Oct 31 16:30:51 CET 2014


---
 src/misc/picture_pool.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/src/misc/picture_pool.c b/src/misc/picture_pool.c
index 2a0f677..771df99 100644
--- a/src/misc/picture_pool.c
+++ b/src/misc/picture_pool.c
@@ -277,8 +277,11 @@ picture_t *picture_pool_Get(picture_pool_t *pool)
         if (!atomic_compare_exchange_strong(&picture->gc.refcount, &refs, 1))
             continue;
 
-        if (pool->pic_lock != NULL && pool->pic_lock(picture) != 0)
+        if (pool->pic_lock != NULL && pool->pic_lock(picture) != 0) {
+            refs = 1;
+            atomic_compare_exchange_strong(&picture->gc.refcount, &refs, 0);
             continue;
+        }
 
         /* */
         picture->p_next = NULL;
-- 
2.1.0




More information about the vlc-devel mailing list