[vlc-devel] [PATCH 1/3] misc/xml: remove useless code replacing it with a comment

Steve Lhomme robux4 at ycbcr.xyz
Thu Sep 24 09:27:34 CEST 2020


OK for patches 1 and 3

On 2020-09-23 20:52, Marvin Scholz wrote:
> Instead of the rather weird, effectively commented-out code, remove
> it and add a comment explaining why xmlCleanupParser can't be called
> for future reference.
> ---
>   modules/misc/xml/libxml.c | 34 +++++++++++++++++++++++-----------
>   1 file changed, 23 insertions(+), 11 deletions(-)
> 
> diff --git a/modules/misc/xml/libxml.c b/modules/misc/xml/libxml.c
> index 14dd887532f..e077139be7f 100644
> --- a/modules/misc/xml/libxml.c
> +++ b/modules/misc/xml/libxml.c
> @@ -79,13 +79,25 @@ static int Open( vlc_object_t *p_this )
>    *****************************************************************************/
>   static void Close( vlc_object_t *p_this )
>   {
> -#ifdef LIBXML_GETS_A_CLUE_ABOUT_REENTRANCY_AND_MEMORY_LEAKS
> -    vlc_mutex_lock( &lock );
> -    xmlCleanupParser();
> -    vlc_mutex_unlock( &lock );
> -#endif
> +    /* /!\
> +     * In theory, xmlCleanupParser() should be called here.
> +     * Unfortunately that function is not thread-safe,
> +     * operating on global state. So even if we would be
> +     * able to know when this module is unloaded, we could
> +     * still not call it then, as other libraries or the apps
> +     * using libVLC could still use libxml themselves.
> +     *
> +     * Citing the libxml docs for xmlCleanupParser:
> +     *
> +     * > If your application is multithreaded or has plugin support
> +     * > calling this may crash the application if another thread or
> +     * > a plugin is still using libxml2. It's sometimes very hard to
> +     * > guess if libxml2 is in use in the application, some libraries
> +     * > or plugins may use it without notice. In case of doubt abstain
> +     * > from calling this function or do it just before calling exit()
> +     * > to avoid leak reports from valgrind!
> +     */
>       VLC_UNUSED(p_this);
> -    return;
>   }
>   
>   /*****************************************************************************
> @@ -253,13 +265,13 @@ static void ReaderClose( vlc_object_t *p_this )
>       xml_reader_sys_t *p_sys = p_reader->p_sys;
>   
>       xmlFreeTextReader( p_sys->xml );
> -#ifdef LIBXML_GETS_A_CLUE_ABOUT_REENTRANCY_AND_MEMORY_LEAKS
> -    vlc_mutex_lock( &lock );
> -    xmlCleanupParser();
> -    vlc_mutex_unlock( &lock );
> -#endif
>       free( p_sys->node );
>       free( p_sys );
> +
> +    /* /!\
> +     * xmlCleanupParser should but can't be called here,
> +     * same reason as in Close() of the main xml module.
> +     */
>   }
>   
>   vlc_module_begin ()
> -- 
> 2.24.3 (Apple Git-128)
> 
> _______________________________________________
> 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