From: Pierre d'Herbemont Date: Thu, 20 Aug 2009 09:11:51 +0000 (+0200) Subject: spdif: Use aout_FifoPop() which checks locking and fix a aout_FifoPop() leak. X-Git-Tag: 1.1.0-ff~4162 X-Git-Url: https://git.sesse.net/?a=commitdiff_plain;h=57ef9e4388273fa19d0b67c5bdf3198b89c19aa0;p=vlc spdif: Use aout_FifoPop() which checks locking and fix a aout_FifoPop() leak. Pointed-out-by a warning. --- diff --git a/modules/audio_mixer/spdif.c b/modules/audio_mixer/spdif.c index 6eb0665622..9e935428c8 100644 --- a/modules/audio_mixer/spdif.c +++ b/modules/audio_mixer/spdif.c @@ -81,30 +81,19 @@ static void DoWork( aout_instance_t * p_aout, aout_buffer_t * p_buffer ) int i = 0; aout_input_t * p_input = p_aout->pp_inputs[i]; while ( p_input->b_error || p_input->b_paused ) - { p_input = p_aout->pp_inputs[++i]; - } - aout_FifoPop( p_aout, &p_input->fifo ); + + aout_buffer_t * p_old_buffer = aout_FifoPop( p_aout, &p_input->fifo ); + aout_BufferFree( p_old_buffer ); /* Empty other FIFOs to avoid a memory leak. */ for ( i++; i < p_aout->i_nb_inputs; i++ ) { - aout_fifo_t * p_fifo; - aout_buffer_t * p_deleted; - p_input = p_aout->pp_inputs[i]; if ( p_input->b_error || p_input->b_paused ) continue; - p_fifo = &p_input->fifo; - p_deleted = p_fifo->p_first; - while ( p_deleted != NULL ) - { - aout_buffer_t * p_next = p_deleted->p_next; - aout_BufferFree( p_deleted ); - p_deleted = p_next; - } - p_fifo->p_first = NULL; - p_fifo->pp_last = &p_fifo->p_first; + while ((p_old_buffer = aout_FifoPop( p_aout, &p_input->fifo ))) + aout_BufferFree( p_old_buffer ); } }