From bde4f0ba22eb98928ed68b236d5cd80efbe0651d Mon Sep 17 00:00:00 2001 From: =?utf8?q?R=C3=A9mi=20Denis-Courmont?= Date: Thu, 5 Mar 2009 22:27:30 +0200 Subject: [PATCH] Hack to get the leaked object tree back --- src/libvlc.c | 6 ++++++ src/misc/objects.c | 5 +++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/src/libvlc.c b/src/libvlc.c index e9499963be..f90994d435 100644 --- a/src/libvlc.c +++ b/src/libvlc.c @@ -1134,6 +1134,12 @@ void libvlc_InternalDestroy( libvlc_int_t *p_libvlc ) vlc_mutex_destroy( &priv->config_lock ); vlc_mutex_destroy( &priv->timer_lock ); +#ifndef NDEBUG /* Hack to dump leaked objects tree */ + if( vlc_internals( p_libvlc )->i_refcount > 1 ) + while( vlc_internals( p_libvlc )->i_refcount > 0 ) + vlc_object_release( p_libvlc ); +#endif + assert( vlc_internals( p_libvlc )->i_refcount == 1 ); vlc_object_release( p_libvlc ); } diff --git a/src/misc/objects.c b/src/misc/objects.c index 3f551900d9..13f1a84905 100644 --- a/src/misc/objects.c +++ b/src/misc/objects.c @@ -572,8 +572,6 @@ void __vlc_object_release( vlc_object_t *p_this ) if( b_should_destroy ) { - /* We have no children */ - assert (internals->i_children == 0); parent = p_this->p_parent; #ifndef NDEBUG @@ -607,6 +605,9 @@ void __vlc_object_release( vlc_object_t *p_this ) if (parent) /* Detach from parent to protect against FIND_CHILDREN */ vlc_object_detach_unlocked (p_this); + + /* We have no children */ + assert (internals->i_children == 0); } libvlc_unlock (p_this->p_libvlc); -- 2.39.2