]> git.sesse.net Git - vlc/commitdiff
Fix httpd reference count and deletion
authorRémi Denis-Courmont <rem@videolan.org>
Sun, 22 May 2005 07:46:02 +0000 (07:46 +0000)
committerRémi Denis-Courmont <rem@videolan.org>
Sun, 22 May 2005 07:46:02 +0000 (07:46 +0000)
src/misc/httpd.c

index 632e56108ec0a66587c0248356c22a2c171a97f1..f050cfe921f2fcd7b47c73aecfd1960c353ccc85 100644 (file)
@@ -1173,6 +1173,12 @@ socket_error:
     return host;
 
 error:
+    if( httpd->i_host <= 0 )
+    {
+        vlc_object_release( httpd );
+        vlc_object_detach( httpd );
+        vlc_object_destroy( httpd );
+    }
     vlc_mutex_unlock( lockval.p_address );
 
     if( fd != -1 )
@@ -1184,8 +1190,6 @@ error:
         vlc_object_destroy( host );
     }
 
-    /* TODO destroy no more used httpd TODO */
-    vlc_object_release( httpd );
     return NULL;
 }
 
@@ -1201,8 +1205,6 @@ void httpd_HostDelete( httpd_host_t *host )
     var_Get( httpd->p_libvlc, "httpd_mutex", &lockval );
     vlc_mutex_lock( lockval.p_address );
 
-    vlc_object_release( httpd );
-
     host->i_ref--;
     if( host->i_ref > 0 )
     {
@@ -1244,6 +1246,7 @@ void httpd_HostDelete( httpd_host_t *host )
     if( httpd->i_host <= 0 )
     {
         msg_Info( httpd, "httpd doesn't reference any host, deleting" );
+        vlc_object_release( httpd );
         vlc_object_detach( httpd );
         vlc_object_destroy( httpd );
     }