<p dir="ltr">Hello,</p>
<p dir="ltr">Le 23 août 2016 15:45, Thomas Guillem <thomas@gllm.fr> a écrit :<br>
><br>
> This fixes a use-after-free when the art fetcher was triggering a callback<br>
> registered by the playlist (that was destroyed).<br>
><br>
> This partially reverts 17bd88b915188d1659ec46c07aa1efd3745071b5 that is a<br>
> revert of 9e9b227443831d8c9798b78122a2194053f2b2f1.<br>
><br>
> Fixes #17087<br>
> ---<br>
> src/libvlc.c | 11 ++++++++---<br>
> 1 file changed, 8 insertions(+), 3 deletions(-)<br>
><br>
> diff --git a/src/libvlc.c b/src/libvlc.c<br>
> index 48c2b8c..8bd736c 100644<br>
> --- a/src/libvlc.c<br>
> +++ b/src/libvlc.c<br>
> @@ -508,6 +508,14 @@ void libvlc_InternalCleanup( libvlc_int_t *p_libvlc )<br>
> {<br>
>      libvlc_priv_t *priv = libvlc_priv (p_libvlc);<br>
><br>
> +    /* Deactivate the playlist before deleting the preparser in order to<br>
> +     * prevent new preparser requests from the playlist */<br>
> +    if (priv->playlist)<br>
> +        playlist_Deactivate(priv->playlist);<br>
> +<br>
> +    if (priv->parser != NULL)<br>
> +        playlist_preparser_Delete(priv->parser);</p>
<p dir="ltr">I think we cannot assume that the preparser won't be used until all interfaces, VLM, Libvlc media players and playlist are all gone. And that seems unwarranted here.</p>
<p dir="ltr">> +<br>
>      /* Ask the interfaces to stop and destroy them */<br>
>      msg_Dbg( p_libvlc, "removing all interfaces" );<br>
>      libvlc_Quit( p_libvlc );<br>
> @@ -536,9 +544,6 @@ void libvlc_InternalCleanup( libvlc_int_t *p_libvlc )<br>
>      }<br>
> #endif<br>
><br>
> -    if (priv->parser != NULL)<br>
> -        playlist_preparser_Delete(priv->parser);<br>
> -<br>
>      vlc_DeinitActions( p_libvlc, priv->actions );<br>
><br>
>      /* Save the configuration */<br>
> -- <br>
> 2.8.1<br>
><br>
> _______________________________________________<br>
> vlc-devel mailing list<br>
> To unsubscribe or modify your subscription options:<br>
> https://mailman.videolan.org/listinfo/vlc-devel<br></p>