[vlc-devel] commit: update: fix objects leak. ( Rémi Duraffort )
git version control
git at videolan.org
Mon Mar 16 10:53:21 CET 2009
vlc | branch: master | Rémi Duraffort <ivoire at videolan.org> | Mon Mar 16 10:52:54 2009 +0100| [4884854bcee170201e232817dec3c2bcd1759ac7] | committer: Rémi Duraffort
update: fix objects leak.
> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=4884854bcee170201e232817dec3c2bcd1759ac7
---
src/misc/update.c | 24 +++++++++++++++++++++---
1 files changed, 21 insertions(+), 3 deletions(-)
diff --git a/src/misc/update.c b/src/misc/update.c
index 2afbf1e..f495b74 100644
--- a/src/misc/update.c
+++ b/src/misc/update.c
@@ -1381,6 +1381,14 @@ void update_Check( update_t *p_update, void (*pf_callback)( void*, bool ), void
{
assert( p_update );
+ // If the object already exist, destroy it
+ if( p_update->p_check )
+ {
+ vlc_object_kill( p_update->p_check );
+ vlc_thread_join( p_update->p_check );
+ vlc_object_release( p_update->p_check );
+ }
+
update_check_thread_t *p_uct =
vlc_custom_create( p_update->p_libvlc, sizeof( *p_uct ),
VLC_OBJECT_GENERIC, "update check" );
@@ -1473,10 +1481,12 @@ static char *size_str( long int l_size )
void update_WaitDownload( update_t *p_update )
{
- if(p_update->p_download)
+ if( p_update->p_download )
+ {
vlc_thread_join( p_update->p_download );
- vlc_object_release( p_update->p_download );
- p_update->p_download = NULL;
+ vlc_object_release( p_update->p_download );
+ p_update->p_download = NULL;
+ }
}
static void* update_DownloadReal( vlc_object_t *p_this );
@@ -1494,6 +1504,14 @@ void update_Download( update_t *p_update, const char *destination )
{
assert( p_update );
+ // If the object already exist, destroy it
+ if( p_update->p_download )
+ {
+ vlc_object_kill( p_update->p_download );
+ vlc_thread_join( p_update->p_download );
+ vlc_object_release( p_update->p_download );
+ }
+
update_download_thread_t *p_udt =
vlc_custom_create( p_update->p_libvlc, sizeof( *p_udt ),
VLC_OBJECT_GENERIC, "update download" );
More information about the vlc-devel
mailing list