From c47268866361d7a66566b8205fe677f9b81f87b0 Mon Sep 17 00:00:00 2001 From: Themaister Date: Mon, 24 Sep 2012 16:40:51 +0200 Subject: [PATCH] Do not segfault when snd_pcm_avail_update() fails. --- audio/alsa.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/audio/alsa.c b/audio/alsa.c index d9160de439..512045ecb3 100644 --- a/audio/alsa.c +++ b/audio/alsa.c @@ -223,7 +223,15 @@ static void alsa_free(void *data) static size_t alsa_write_avail(void *data) { alsa_t *alsa = (alsa_t*)data; - return snd_pcm_frames_to_bytes(alsa->pcm, snd_pcm_avail_update(alsa->pcm)); + + snd_pcm_sframes_t avail = snd_pcm_avail_update(alsa->pcm); + if (avail < 0) + { + RARCH_WARN("[ALSA]: avail_update() failed: %s\n", snd_strerror(avail)); + return alsa->buffer_size; + } + + return snd_pcm_frames_to_bytes(alsa->pcm, avail); } static size_t alsa_buffer_size(void *data)