From 9fae75b81ce2eb475db7652083b388e704833a72 Mon Sep 17 00:00:00 2001 From: reimar Date: Sun, 23 Oct 2011 12:03:13 +0000 Subject: [PATCH] ao_coreaudio: fix crash when using mute with S/PDIF output RenderCallbackSPDIF might call read_buffer with NULL data. The purpose is to drain data from the buffer when the output is muted. Add a check to call av_fifo_drain() in this case. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@34241 b3059339-0415-0410-9bf9-f77b7e298cf2 git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@34242 b3059339-0415-0410-9bf9-f77b7e298cf2 --- libao2/ao_coreaudio.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/libao2/ao_coreaudio.c b/libao2/ao_coreaudio.c index 61323c1129..34374f4c9c 100644 --- a/libao2/ao_coreaudio.c +++ b/libao2/ao_coreaudio.c @@ -133,7 +133,10 @@ static int write_buffer(unsigned char* data, int len){ static int read_buffer(unsigned char* data,int len){ int buffered = av_fifo_size(ao->buffer); if (len > buffered) len = buffered; - av_fifo_generic_read(ao->buffer, data, len, NULL); + if (data) + av_fifo_generic_read(ao->buffer, data, len, NULL); + else + av_fifo_drain(ao->buffer, len); return len; }