[vlc-devel] commit: objects.c: Automatically detach from the parent. (Pierre d' Herbemont )

Pierre d'Herbemont pdherbemont at free.fr
Wed Mar 19 01:32:43 CET 2008


Hi,

I didn't wait for the RFC approval cause it seems that we indeed do  
need that one (see 6fe2f30) to fix critical races.

Pierre.

On Mar 19, 2008, at 1:30 AM, git version control wrote:

> vlc | branch: master | Pierre d'Herbemont <pdherbemont at free.fr> |  
> Wed Mar 19 01:29:12 2008 +0100|  
> [afccd092f45c32f72a43283c725e939f173ec3c9]
>
> objects.c: Automatically detach from the parent.
>
>> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=afccd092f45c32f72a43283c725e939f173ec3c9
> ---
>
> src/misc/objects.c |   19 +++----------------
> 1 files changed, 3 insertions(+), 16 deletions(-)
>
> diff --git a/src/misc/objects.c b/src/misc/objects.c
> index 28f8d8f..fa1bfe0 100644
> --- a/src/misc/objects.c
> +++ b/src/misc/objects.c
> @@ -389,6 +389,9 @@ static void vlc_object_destroy( vlc_object_t  
> *p_this )
> {
>     vlc_object_internals_t *p_priv = vlc_internals( p_this );
>
> +    /* Automatically detach the object from its parents */
> +    if( p_this->p_parent ) vlc_object_detach( p_this );
> +
>     /* Sanity checks */
>     if( p_this->i_children )
>     {
> @@ -412,19 +415,6 @@ static void vlc_object_destroy( vlc_object_t  
> *p_this )
>         abort();
>     }
>
> -    if( p_this->p_parent )
> -    {
> -        fprintf( stderr,
> -                 "ERROR: cannot delete object (id:%i, type:%s, name: 
> %s) "
> -                 "with a parent (id:%i, type:%s, name:%s)\n",
> -                 p_this->i_object_id, p_this->psz_object_type,
> -                 p_this->psz_object_name, p_this->p_parent- 
> >i_object_id,
> -                 p_this->p_parent->psz_object_type,
> -                 p_this->p_parent->psz_object_name );
> -        fflush(stderr);
> -        abort();
> -    }
> -
>     /* Call the custom "subclass" destructor */
>     if( p_priv->pf_destructor )
>         p_priv->pf_destructor( p_this );
> @@ -1008,9 +998,6 @@ void __vlc_object_detach( vlc_object_t *p_this )
>
>     vlc_mutex_lock( &structure_lock );
>
> -    /* Avoid obvious freed object uses */
> -    assert( p_this->p_internals->i_refcount > 0 );
> -
>     if( !p_this->p_parent )
>     {
>         msg_Err( p_this, "object is not attached" );
>
> _______________________________________________
> vlc-devel mailing list
> To unsubscribe or modify your subscription options:
> http://mailman.videolan.org/listinfo/vlc-devel




More information about the vlc-devel mailing list