diff -ur libao-0.8.5-org/src/plugins/alsa09/ao_alsa09.c libao-0.8.5/src/plugins/alsa09/ao_alsa09.c
--- libao-0.8.5-org/src/plugins/alsa09/ao_alsa09.c	2003-10-13 05:12:32.000000000 +0300
+++ libao-0.8.5/src/plugins/alsa09/ao_alsa09.c	2005-07-11 01:27:24.000000000 +0300
@@ -453,8 +453,9 @@
 		/* try to write the entire buffer at once */
 		err = internal->writei(internal->pcm_handle, ptr, len);
 
-		/* it's possible that no data was transferred */
-		if (err == -EAGAIN) {
+		/* it's possible that no data was transferred or interrupt
+		   was catched */
+		if (err == -EAGAIN || err == -EINTR) {
 			continue;
 		}
 
Only in libao-0.8.5/src/plugins/alsa09: ao_alsa09.c~
