From d1eeed6a5ba0ac35f9dcad6355fc2d18c1860a9f Mon Sep 17 00:00:00 2001
From: Max Kellermann <max@duempel.org>
Date: Wed, 20 Jul 2011 06:54:51 +0200
Subject: [PATCH] output/alsa: fix SIGFPE when alsa announces a period size of
 0

---
 NEWS                     | 2 ++
 src/output/alsa_plugin.c | 8 ++++++++
 2 files changed, 10 insertions(+)

diff --git a/NEWS b/NEWS
index 4756b64f6..ddba638c7 100644
--- a/NEWS
+++ b/NEWS
@@ -3,6 +3,8 @@ ver 0.16.4 (2011/??/??)
 * decoder:
   - ffmpeg: workaround for semantic API change in recent ffmpeg versions
   - flac: validate the sample rate when scanning the tag
+* output:
+  - alsa: fix SIGFPE when alsa announces a period size of 0
 
 
 ver 0.16.3 (2011/06/04)
diff --git a/src/output/alsa_plugin.c b/src/output/alsa_plugin.c
index 9177fabe4..422264f53 100644
--- a/src/output/alsa_plugin.c
+++ b/src/output/alsa_plugin.c
@@ -508,6 +508,14 @@ configure_hw:
 	g_debug("buffer_size=%u period_size=%u",
 		(unsigned)alsa_buffer_size, (unsigned)alsa_period_size);
 
+	if (alsa_period_size == 0)
+		/* this works around a SIGFPE bug that occurred when
+		   an ALSA driver indicated period_size==0; this
+		   caused a division by zero in alsa_play().  By using
+		   the fallback "1", we make sure that this won't
+		   happen again. */
+		alsa_period_size = 1;
+
 	ad->period_frames = alsa_period_size;
 	ad->period_position = 0;