vlc | branch: master | Rémi Denis-Courmont <[email protected]> | Mon Nov 17 18:45:52 2014 +0200| [b306cb2d3056b0240f6597dda4d19c6febde3f93] | committer: Rémi Denis-Courmont
cdda: memory leak due to STANDARD_BLOCK_ACCESS_INIT > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=b306cb2d3056b0240f6597dda4d19c6febde3f93 --- modules/access/cdda.c | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/modules/access/cdda.c b/modules/access/cdda.c index c93995b..5d31a7d 100644 --- a/modules/access/cdda.c +++ b/modules/access/cdda.c @@ -127,7 +127,6 @@ static cddb_disc_t *GetCDDBInfo( access_t *p_access, int i_titles, int *p_sector static int Open( vlc_object_t *p_this ) { access_t *p_access = (access_t*)p_this; - access_sys_t *p_sys; vcddev_t *vcddev; char *psz_name; @@ -147,18 +146,26 @@ static int Open( vlc_object_t *p_this ) if( psz_name[0] && psz_name[1] == ':' && psz_name[2] == '\\' && psz_name[3] == '\0' ) psz_name[2] = '\0'; #endif - /* Set up p_access */ - STANDARD_BLOCK_ACCESS_INIT - /* Open CDDA */ - if( (vcddev = ioctl_Open( VLC_OBJECT(p_access), psz_name ) ) == NULL ) + access_sys_t *p_sys = calloc( 1, sizeof (*p_sys) ); + if( unlikely(p_sys == NULL) ) { - msg_Warn( p_access, "could not open %s", psz_name ); free( psz_name ); + return VLC_ENOMEM; + } + p_access->p_sys = p_sys; + + /* Open CDDA */ + vcddev = ioctl_Open( VLC_OBJECT(p_access), psz_name ); + if( vcddev == NULL ) + msg_Warn( p_access, "could not open %s", psz_name ); + free( psz_name ); + if( vcddev == NULL ) + { free( p_sys ); return VLC_EGENERIC; } - free( psz_name ); + p_sys->vcddev = vcddev; /* Do we play a single track ? */ @@ -224,6 +231,9 @@ static int Open( vlc_object_t *p_this ) * (int64_t)CDDA_DATA_SIZE; } + /* Set up p_access */ + access_InitFields( p_access ); + ACCESS_SET_CALLBACKS( NULL, Block, Control, Seek ); return VLC_SUCCESS; error: _______________________________________________ vlc-commits mailing list [email protected] https://mailman.videolan.org/listinfo/vlc-commits
