diff -ur openal-soft-1.9.563.orig/Alc/oss.c openal-soft-1.9.563/Alc/oss.c --- openal-soft-1.9.563.orig/Alc/oss.c 2009-09-21 03:41:50.000000000 -0600 +++ openal-soft-1.9.563/Alc/oss.c 2009-10-19 01:39:25.326979984 -0600 @@ -80,12 +80,12 @@ ALCdevice *pDevice = (ALCdevice*)ptr; oss_data *data = (oss_data*)pDevice->ExtraData; ALint frameSize; - int wrote; + ssize_t wrote; frameSize = aluChannelsFromFormat(pDevice->Format) * aluBytesFromFormat(pDevice->Format); - while(!data->killNow && !pDevice->Connected) + while(!data->killNow && pDevice->Connected) { ALint len = data->data_size; ALubyte *WritePtr = data->mix_data; @@ -96,7 +96,7 @@ wrote = write(data->fd, WritePtr, len); if(wrote < 0) { - if(errno != EAGAIN && errno != EWOULDBLOCK) + if(errno != EAGAIN && errno != EWOULDBLOCK && errno != EINTR) { AL_PRINT("write failed: %s\n", strerror(errno)); aluHandleDisconnect(pDevice);