=================================================================== RCS file: /cvsroot/alsa/alsa-kernel/core/oss/pcm_oss.c,v retrieving revision 1.21 retrieving revision 1.22 diff -u -r1.21 -r1.22 --- alsa/alsa-kernel/core/oss/pcm_oss.c 2002/10/21 18:28:20 1.21 +++ alsa/alsa-kernel/core/oss/pcm_oss.c 2002/10/30 20:29:15 1.22 @@ -564,7 +564,15 @@ } else { ret = snd_pcm_lib_read(substream, ptr, frames); } - if (ret != -EPIPE && ret != -ESTRPIPE) + if (ret == -EPIPE) { + if (runtime->status->state == SNDRV_PCM_STATE_DRAINING) { + ret = snd_pcm_kernel_ioctl(substream, SNDRV_PCM_IOCTL_DROP, 0); + if (ret < 0) + break; + } + continue; + } + if (ret != -ESTRPIPE) break; } return ret;