]> git.sesse.net Git - vlc/commitdiff
Fix input item leaking
authorRafaël Carré <funman@videolan.org>
Thu, 24 Apr 2008 13:28:59 +0000 (15:28 +0200)
committerRafaël Carré <funman@videolan.org>
Thu, 24 Apr 2008 13:28:59 +0000 (15:28 +0200)
modules/control/rc.c
modules/gui/wxwidgets/dialogs/playlist.cpp
modules/gui/wxwidgets/dialogs/wizard.cpp
modules/services_discovery/upnp_cc.cpp
modules/services_discovery/upnp_intel.cpp

index 5b375620f22f6a6a5e356927ac4aed54bd7da43d..ab990baeb11d5a147c4c18a2b263b1d6f9e2b7f4 100644 (file)
@@ -1431,9 +1431,11 @@ static int Playlist( vlc_object_t *p_this, char const *psz_cmd,
         if( p_item )
         {
             msg_rc( "Trying to add %s to playlist.", newval.psz_string );
-            if( playlist_AddInput( p_playlist, p_item,
+            int i_ret =playlist_AddInput( p_playlist, p_item,
                      PLAYLIST_GO|PLAYLIST_APPEND, PLAYLIST_END, true,
-                     false ) != VLC_SUCCESS )
+                     false );
+            vlc_gc_decref( p_item );
+            if( i_ret != VLC_SUCCESS )
             {
                 return VLC_EGENERIC;
             }
index e3349ee72ebd6ce7825a253c3c66154b2ab9714d..17d0022d107ab19f25f999a8f295bffcf22cab12 100644 (file)
@@ -1290,6 +1290,7 @@ bool PlaylistFileDropTarget::OnDropFiles( wxCoord x, wxCoord y,
                                               psz_utf8, psz_utf8 );
         int i_ret = ( playlist_NodeAddInput( p->p_playlist, p_input, p_dest,
                 PLAYLIST_PREPARSE, i_pos, false ) != VLC_SUCCESS );
+        vlc_gc_decref( p_input );
         wxDnDLocaleFree( psz_utf8 );
         if( i_ret != VLC_SUCCESS )
             return FALSE;
index c8235ecfcdb3a587426b15d2eeb26973b570f421..792a24e7c2d4c75f7624c0857de76f45eaca2146 100644 (file)
@@ -1635,6 +1635,7 @@ void WizardDialog::Run()
             /* FIXME: playlist_AddInput() can fail */
             playlist_AddInput( p_playlist, p_input,
                                PLAYLIST_GO, PLAYLIST_END, true, false );
+            vlc_gc_decref( p_input );
             vlc_object_release(p_playlist);
         }
         else
index ac9a77c0929fd9e9f8d2a7651c36d5d009c7724e..37dd4fa1c6528c6797fee92fa85cdda0c611c375 100644 (file)
@@ -221,6 +221,7 @@ void UPnPHandler::AddContent( playlist_item_t *p_parent, ContentNode *node )
         playlist_BothAddInput( p_playlist, p_input, p_parent,
                                PLAYLIST_APPEND, PLAYLIST_END, NULL, NULL,
                                false );
+        vlc_gc_decref( p_input );
     } else if ( node->isContainerNode() )
     {
         ContainerNode *conNode = (ContainerNode *)node;
index 63a4c97d94ebdec0263a42a1aff20f8409e42bc2..c1d67a95ccbd162c9e818badacb99d04ad42d735 100644 (file)
@@ -875,6 +875,7 @@ void MediaServer::_buildPlaylist( Container* parent )
         playlist_BothAddInput( p_playlist, p_input, parentNode,
                                PLAYLIST_APPEND, PLAYLIST_END, &i_cat, NULL,
                                false );
+        vlc_gc_decref( p_input );
         /* TODO: do this better by storing ids */
         playlist_item_t *p_node = playlist_ItemGetById( p_playlist, i_cat, false );
         assert( p_node );