From 1db9db8d0b364396bddde04728c8adb7b70c7d6b Mon Sep 17 00:00:00 2001 From: Gildas Bazin Date: Sun, 4 Dec 2005 19:35:35 +0000 Subject: [PATCH] * modules/audio_output/alsa.c: fixed minor memory leak. --- modules/audio_output/alsa.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/modules/audio_output/alsa.c b/modules/audio_output/alsa.c index 4ebcdf3f07..f4b554f776 100644 --- a/modules/audio_output/alsa.c +++ b/modules/audio_output/alsa.c @@ -315,7 +315,6 @@ static int Open( vlc_object_t *p_this ) } p_sys->b_playing = VLC_FALSE; p_sys->start_date = 0; - p_sys->p_status = (snd_pcm_status_t *)malloc(snd_pcm_status_sizeof()); vlc_cond_init( p_aout, &p_sys->wait ); vlc_mutex_init( p_aout, &p_sys->lock ); @@ -327,6 +326,8 @@ static int Open( vlc_object_t *p_this ) return VLC_EGENERIC; } + p_sys->p_status = (snd_pcm_status_t *)malloc(snd_pcm_status_sizeof()); + /* Choose the IEC device for S/PDIF output: if the device is overriden by the user then it will be the one otherwise we compute the default device based on the output format. */ @@ -375,6 +376,7 @@ static int Open( vlc_object_t *p_this ) if ( var_Get( p_aout, "audio-device", &val ) < 0 ) { + free( p_sys->p_status ); free( p_sys ); free( psz_device ); return VLC_EGENERIC; @@ -411,6 +413,7 @@ static int Open( vlc_object_t *p_this ) { /* This should not happen ! */ msg_Err( p_aout, "internal: can't find audio-device (%i)", val.i_int ); + free( p_sys->p_status ); free( p_sys ); free( psz_device ); return VLC_EGENERIC; @@ -428,6 +431,7 @@ static int Open( vlc_object_t *p_this ) { msg_Err( p_aout, "cannot open ALSA device `%s' (%s)", psz_iec_device, snd_strerror( i_snd_rc ) ); + free( p_sys->p_status ); free( p_sys ); free( psz_device ); return VLC_EGENERIC; @@ -470,6 +474,7 @@ static int Open( vlc_object_t *p_this ) { msg_Err( p_aout, "cannot open ALSA device `%s' (%s)", psz_device, snd_strerror( i_snd_rc ) ); + free( p_sys->p_status ); free( p_sys ); free( psz_device ); return VLC_EGENERIC; @@ -673,6 +678,7 @@ error: #ifdef ALSA_DEBUG snd_output_close( p_sys->p_snd_stderr ); #endif + free( p_sys->p_status ); free( p_sys ); return VLC_EGENERIC; } -- 2.39.2