[vlc-devel] [PATCH] picture_pool: fix refcount leak if pic_lock fails.
Rémi Denis-Courmont
remi at remlab.net
Fri Oct 31 17:11:30 CET 2014
Le vendredi 31 octobre 2014, 16:30:51 Thomas Guillem a écrit :
> ---
> 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);
This does not make much sense to me.
What happens if the function returns false?
>> continue;
> + }
>
> /* */
> picture->p_next = NULL;
--
Rémi Denis-Courmont
http://www.remlab.net/
More information about the vlc-devel
mailing list