The new buffer write position is modulo the buffer size. To reproduce start qemu with: -audiodev oss,id=audio0,try-mmap=on,out.mixing-engine=off
Signed-off-by: Volker Rümelin <vr_q...@t-online.de> --- audio/ossaudio.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/audio/ossaudio.c b/audio/ossaudio.c index 6a3b78b381..39a6fc09e5 100644 --- a/audio/ossaudio.c +++ b/audio/ossaudio.c @@ -429,7 +429,7 @@ static size_t oss_write(HWVoiceOut *hw, void *buf, size_t len) size_t to_copy = MIN(len, hw->size_emul - hw->pos_emul); memcpy(hw->buf_emul + hw->pos_emul, buf, to_copy); - hw->pos_emul = (hw->pos_emul + to_copy) % hw->pos_emul; + hw->pos_emul = (hw->pos_emul + to_copy) % hw->size_emul; buf += to_copy; len -= to_copy; } -- 2.16.4