vlc | branch: master | Francois Cartegnie <[email protected]> | Fri Feb 12 10:26:34 2016 +0100| [8057ba9422fbc1b998dda72fcf14e306efd0a014] | committer: Francois Cartegnie
epg: fix memory leak > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=8057ba9422fbc1b998dda72fcf14e306efd0a014 --- src/misc/epg.c | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/src/misc/epg.c b/src/misc/epg.c index c0148b5..767fdaa 100644 --- a/src/misc/epg.c +++ b/src/misc/epg.c @@ -32,6 +32,14 @@ #include <vlc_common.h> #include <vlc_epg.h> +static void vlc_epg_Event_Delete( vlc_epg_event_t *p_evt ) +{ + free( p_evt->psz_name ); + free( p_evt->psz_short_description ); + free( p_evt->psz_description ); + free( p_evt ); +} + void vlc_epg_Init( vlc_epg_t *p_epg, const char *psz_name ) { p_epg->psz_name = psz_name ? strdup( psz_name ) : NULL; @@ -43,13 +51,7 @@ void vlc_epg_Clean( vlc_epg_t *p_epg ) { int i; for( i = 0; i < p_epg->i_event; i++ ) - { - vlc_epg_event_t *p_evt = p_epg->pp_event[i]; - free( p_evt->psz_name ); - free( p_evt->psz_short_description ); - free( p_evt->psz_description ); - free( p_evt ); - } + vlc_epg_Event_Delete( p_epg->pp_event[i] ); TAB_CLEAN( p_epg->i_event, p_epg->pp_event ); free( p_epg->psz_name ); } @@ -144,7 +146,10 @@ void vlc_epg_Merge( vlc_epg_t *p_dst, const vlc_epg_t *p_src ) if( p_dst->p_current ) { while( p_dst->i_event > 1 && p_dst->pp_event[0] != p_dst->p_current && p_dst->pp_event[1] != p_dst->p_current ) + { + vlc_epg_Event_Delete( p_dst->pp_event[0] ); TAB_REMOVE( p_dst->i_event, p_dst->pp_event, p_dst->pp_event[0] ); + } } } _______________________________________________ vlc-commits mailing list [email protected] https://mailman.videolan.org/listinfo/vlc-commits
