[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