[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