vlc | branch: master | Rémi Denis-Courmont <[email protected]> | Thu Aug 4 15:44:15 2011 +0300| [70e32d82dc98e813b440479a6601a9bf4ea64b3e] | committer: Rémi Denis-Courmont
aout: fix error handling when output creation fails > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=70e32d82dc98e813b440479a6601a9bf4ea64b3e --- src/audio_output/dec.c | 14 +++++++------- 1 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/audio_output/dec.c b/src/audio_output/dec.c index 0f259eb..cd09fac 100644 --- a/src/audio_output/dec.c +++ b/src/audio_output/dec.c @@ -95,30 +95,30 @@ aout_input_t *aout_DecNew( audio_output_t *p_aout, aout_owner_t *owner = aout_owner(p_aout); aout_lock( p_aout ); assert (owner->input == NULL); - owner->input = p_input; var_Destroy( p_aout, "audio-device" ); var_Destroy( p_aout, "audio-channels" ); /* Recreate the output using the new format. */ if( aout_OutputNew( p_aout, p_format ) < 0 ) -#warning Input without output and mixer = bad idea. - goto out; + goto error; assert (owner->volume.mixer == NULL); owner->volume.mixer = aout_MixerNew (p_aout, owner->mixer_format.i_format); if (owner->volume.mixer == NULL) { aout_OutputDelete( p_aout ); -#warning Memory leak. - p_input = NULL; - goto out; + goto error; } + owner->input = p_input; aout_InputNew( p_aout, p_input, p_request_vout ); -out: aout_unlock( p_aout ); return p_input; +error: + aout_unlock( p_aout ); + free( p_input ); + return NULL; } /***************************************************************************** _______________________________________________ vlc-commits mailing list [email protected] http://mailman.videolan.org/listinfo/vlc-commits
