$OpenBSD: patch-Alc_sndio_c,v 1.2 2011/07/02 07:34:31 jasper Exp $
--- Alc/sndio.c.orig	Mon Jun 27 01:40:15 2011
+++ Alc/sndio.c	Thu Jun 30 23:37:31 2011
@@ -142,25 +142,15 @@ static ALuint sndio_proc(ALvoid *ptr)
 
     while(!data->killNow && device->Connected)
     {
-        ALsizei len = data->data_size;
-        ALubyte *WritePtr = data->mix_data;
-
-        aluMixData(device, WritePtr, len/frameSize);
-        while(len > 0 && !data->killNow)
+        aluMixData(device, data->mix_data, data->data_size / frameSize);
+        wrote = sio_write(data->sndHandle, data->mix_data, data->data_size);
+        if(wrote < data->data_size)
         {
-            wrote = sio_write(data->sndHandle, WritePtr, len);
-            if(wrote == 0)
-            {
-                AL_PRINT("sio_write failed\n");
-                aluHandleDisconnect(device);
-                break;
-            }
-
-            len -= wrote;
-            WritePtr += wrote;
-        }
+	    AL_PRINT("sio_write: short write\n");
+	    aluHandleDisconnect(device);
+	    break;
+	}
     }
-
     return 0;
 }
 
