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

Thomas Guillem thomas at gllm.fr
Fri Oct 31 17:24:59 CET 2014



On Fri, Oct 31, 2014, at 17:11, Rémi Denis-Courmont wrote:
> 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?

Ah yes I see. Is is better to force the refcount to 0 in that case ?
With atomic_store, right ?

> 
> >> continue;
> > +        }
> > 
> >          /* */
> >          picture->p_next = NULL;
> 
> -- 
> Rémi Denis-Courmont
> http://www.remlab.net/
> 
> _______________________________________________
> vlc-devel mailing list
> To unsubscribe or modify your subscription options:
> https://mailman.videolan.org/listinfo/vlc-devel



More information about the vlc-devel mailing list