diff --git a/modules/services_discovery/mtp.c b/modules/services_discovery/mtp.c index f04dbd2794e09db84f590f5f86c35b019334e547..0bf15c54f5c350cad5c3b22f609f9461c9918fff 100644 --- a/modules/services_discovery/mtp.c +++ b/modules/services_discovery/mtp.c @@ -190,6 +190,7 @@ static void CloseDevice( services_discovery_t *p_sd ) } } free( pp_items ); + p_sys->pp_items = NULL; } } @@ -273,6 +274,15 @@ static void Close( vlc_object_t *p_this ) free( p_sys->psz_name ); vlc_cancel( p_sys->thread ); vlc_join( p_sys->thread, NULL ); + + if ( p_sys->pp_items != NULL ) + { + for( int i_i = 0; i_i < p_sys->i_count; i_i++ ) + if( p_sys->pp_items[i_i] != NULL ) + input_item_Release( p_sys->pp_items[i_i] ); + free( p_sys->pp_items ); + } + free( p_sys ); }