vlc | branch: master | Rémi Denis-Courmont <[email protected]> | Tue Apr 18 21:38:02 2017 +0300| [558b768d58727a709d504b56502cafabf132c216] | committer: Rémi Denis-Courmont
playlist: remove redundant hold/release The playlist demuxer cannot outlive its input thread, and the input thread cannot outlive its input item. Otherwise, there would be an intractable race between input_GetItem() and input_item_Hold() anyway. This removes the unnecessary pairs of input item hold and release, and fixes a reference leak on error in the iTML parser. > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=558b768d58727a709d504b56502cafabf132c216 --- modules/demux/playlist/asx.c | 1 - modules/demux/playlist/b4s.c | 1 - modules/demux/playlist/dvb.c | 1 - modules/demux/playlist/gvp.c | 2 -- modules/demux/playlist/ifo.c | 2 -- modules/demux/playlist/itml.c | 2 -- modules/demux/playlist/m3u.c | 1 - modules/demux/playlist/playlist.c | 7 ------- modules/demux/playlist/playlist.h | 6 ++++-- modules/demux/playlist/pls.c | 1 - modules/demux/playlist/podcast.c | 2 -- modules/demux/playlist/qtl.c | 2 -- modules/demux/playlist/ram.c | 1 - modules/demux/playlist/sgimb.c | 1 - modules/demux/playlist/shoutcast.c | 1 - modules/demux/playlist/wpl.c | 1 - modules/demux/playlist/xspf.c | 1 - 17 files changed, 4 insertions(+), 29 deletions(-) diff --git a/modules/demux/playlist/asx.c b/modules/demux/playlist/asx.c index 3d78dde738..e340b8943e 100644 --- a/modules/demux/playlist/asx.c +++ b/modules/demux/playlist/asx.c @@ -502,7 +502,6 @@ error: input_item_node_Delete( p_subitems ); if( p_stream ) vlc_stream_Delete( p_stream ); - input_item_Release( p_current_input ); return 0; } diff --git a/modules/demux/playlist/b4s.c b/modules/demux/playlist/b4s.c index 676cb04440..a9ebba02e8 100644 --- a/modules/demux/playlist/b4s.c +++ b/modules/demux/playlist/b4s.c @@ -230,7 +230,6 @@ end: if( p_subitems ) input_item_node_PostAndDelete( p_subitems ); - input_item_Release( p_current_input ); if( p_xml_reader ) xml_ReaderDelete( p_xml_reader ); return i_ret; diff --git a/modules/demux/playlist/dvb.c b/modules/demux/playlist/dvb.c index 48b49551ec..9de9cddcad 100644 --- a/modules/demux/playlist/dvb.c +++ b/modules/demux/playlist/dvb.c @@ -96,7 +96,6 @@ static int Demux(demux_t *demux) } input_item_node_PostAndDelete(subitems); - input_item_Release(input); return 0; /* Needed for correct operation of go back */ } diff --git a/modules/demux/playlist/gvp.c b/modules/demux/playlist/gvp.c index 6cad202f32..04dc3eb585 100644 --- a/modules/demux/playlist/gvp.c +++ b/modules/demux/playlist/gvp.c @@ -177,8 +177,6 @@ static int Demux( demux_t *p_demux ) input_item_node_PostAndDelete( p_subitems ); - input_item_Release(p_current_input); - free( psz_version ); free( psz_url ); free( psz_docid ); diff --git a/modules/demux/playlist/ifo.c b/modules/demux/playlist/ifo.c index 5f0eae6949..9b28c7cd55 100644 --- a/modules/demux/playlist/ifo.c +++ b/modules/demux/playlist/ifo.c @@ -109,7 +109,6 @@ static int Demux( demux_t *p_demux ) input_item_PostSubItem( p_current_input, p_input ); input_item_Release( p_input ); - input_item_Release(p_current_input); free( psz_url ); return 0; /* Needed for correct operation of go back */ @@ -133,7 +132,6 @@ static int DemuxDVD_VR( demux_t *p_demux ) input_item_Release( p_input ); - input_item_Release(p_current_input); free( psz_url ); return 0; /* Needed for correct operation of go back */ diff --git a/modules/demux/playlist/itml.c b/modules/demux/playlist/itml.c index 70fe91c2e5..5f636262f1 100644 --- a/modules/demux/playlist/itml.c +++ b/modules/demux/playlist/itml.c @@ -118,8 +118,6 @@ int Demux( demux_t *p_demux ) pl_elements ); input_item_node_PostAndDelete( p_subitems ); - input_item_Release(p_current_input); - end: if( p_xml_reader ) xml_ReaderDelete( p_xml_reader ); diff --git a/modules/demux/playlist/m3u.c b/modules/demux/playlist/m3u.c index 8a84d9a972..98798e306d 100644 --- a/modules/demux/playlist/m3u.c +++ b/modules/demux/playlist/m3u.c @@ -305,7 +305,6 @@ static int Demux( demux_t *p_demux ) } } input_item_node_PostAndDelete( p_subitems ); - input_item_Release(p_current_input); var_Destroy( p_demux, "m3u-extvlcopt" ); return 0; /* Needed for correct operation of go back */ } diff --git a/modules/demux/playlist/playlist.c b/modules/demux/playlist/playlist.c index dca07f5b19..23f928278d 100644 --- a/modules/demux/playlist/playlist.c +++ b/modules/demux/playlist/playlist.c @@ -166,13 +166,6 @@ int Control(demux_t *demux, int query, va_list args) return VLC_EGENERIC; } -input_item_t * GetCurrentItem(demux_t *p_demux) -{ - input_item_t *p_current_input = input_GetItem( p_demux->p_input ); - input_item_Hold(p_current_input); - return p_current_input; -} - /** * Computes the base URL. * diff --git a/modules/demux/playlist/playlist.h b/modules/demux/playlist/playlist.h index 65b7697938..fd242c39f9 100644 --- a/modules/demux/playlist/playlist.h +++ b/modules/demux/playlist/playlist.h @@ -74,8 +74,10 @@ void Close_WPL ( vlc_object_t * ); int Import_Dir ( vlc_object_t * ); - -extern input_item_t * GetCurrentItem(demux_t *p_demux); +static inline input_item_t * GetCurrentItem(demux_t *p_demux) +{ + return input_GetItem( p_demux->p_input ); +} #define CHECK_FILE() \ do { \ diff --git a/modules/demux/playlist/pls.c b/modules/demux/playlist/pls.c index 9419a22a88..f2267db0f9 100644 --- a/modules/demux/playlist/pls.c +++ b/modules/demux/playlist/pls.c @@ -194,7 +194,6 @@ static int Demux( demux_t *p_demux ) input_item_node_PostAndDelete( p_subitems ); - input_item_Release(p_current_input); free( psz_prefix ); return 0; /* Needed for correct operation of go back */ } diff --git a/modules/demux/playlist/podcast.c b/modules/demux/playlist/podcast.c index 7d21575eb1..466f85efef 100644 --- a/modules/demux/playlist/podcast.c +++ b/modules/demux/playlist/podcast.c @@ -319,7 +319,6 @@ static int Demux( demux_t *p_demux ) xml_ReaderDelete( p_xml_reader ); input_item_node_PostAndDelete( p_subitems ); - input_item_Release(p_current_input); return 0; /* Needed for correct operation of go back */ error: @@ -342,7 +341,6 @@ error: if( p_subitems ) input_item_node_Delete( p_subitems ); - input_item_Release(p_current_input); return -1; } diff --git a/modules/demux/playlist/qtl.c b/modules/demux/playlist/qtl.c index 46d0d82421..71e20df800 100644 --- a/modules/demux/playlist/qtl.c +++ b/modules/demux/playlist/qtl.c @@ -261,8 +261,6 @@ error: if( p_xml_reader ) xml_ReaderDelete( p_xml_reader ); - input_item_Release(p_current_input); - free( psz_href ); free( psz_moviename ); free( psz_qtnext ); diff --git a/modules/demux/playlist/ram.c b/modules/demux/playlist/ram.c index aca7a57d9d..f9aca44e23 100644 --- a/modules/demux/playlist/ram.c +++ b/modules/demux/playlist/ram.c @@ -379,7 +379,6 @@ static int Demux( demux_t *p_demux ) } } input_item_node_PostAndDelete( p_subitems ); - input_item_Release(p_current_input); var_Destroy( p_demux, "m3u-extvlcopt" ); free(psz_prefix); return 0; /* Needed for correct operation of go back */ diff --git a/modules/demux/playlist/sgimb.c b/modules/demux/playlist/sgimb.c index 017fdc245d..24a8a7abed 100644 --- a/modules/demux/playlist/sgimb.c +++ b/modules/demux/playlist/sgimb.c @@ -401,6 +401,5 @@ static int Demux ( demux_t *p_demux ) input_item_PostSubItem( p_current_input, p_child ); input_item_Release( p_child ); - input_item_Release(p_current_input); return 0; /* Needed for correct operation of go back */ } diff --git a/modules/demux/playlist/shoutcast.c b/modules/demux/playlist/shoutcast.c index f11f650431..c32589737a 100644 --- a/modules/demux/playlist/shoutcast.c +++ b/modules/demux/playlist/shoutcast.c @@ -120,7 +120,6 @@ error: if( p_xml_reader ) xml_ReaderDelete( p_xml_reader ); if( p_input_node ) input_item_node_Delete( p_input_node ); - input_item_Release(p_current_input); return i_ret; } diff --git a/modules/demux/playlist/wpl.c b/modules/demux/playlist/wpl.c index b036c7f0ba..eb96cfe5c2 100644 --- a/modules/demux/playlist/wpl.c +++ b/modules/demux/playlist/wpl.c @@ -279,7 +279,6 @@ static int Demux( demux_t* p_demux ) } input_item_node_PostAndDelete( p_node ); - input_item_Release( p_input ); return 0; } diff --git a/modules/demux/playlist/xspf.c b/modules/demux/playlist/xspf.c index b3db813263..8dbd487fca 100644 --- a/modules/demux/playlist/xspf.c +++ b/modules/demux/playlist/xspf.c @@ -160,7 +160,6 @@ static int Demux(demux_t *p_demux) input_item_node_PostAndDelete(p_subitems); end: - input_item_Release(p_current_input); if (p_xml_reader) xml_ReaderDelete(p_xml_reader); return i_ret; /* Needed for correct operation of go back */ _______________________________________________ vlc-commits mailing list [email protected] https://mailman.videolan.org/listinfo/vlc-commits
