From 69c0b6b2957c89445cca794e3f24058ae95e3f1e Mon Sep 17 00:00:00 2001
From: deuce <>
Date: Tue, 30 Sep 2008 04:27:07 +0000
Subject: [PATCH] Fix partial writei()

---
 src/xpdev/xpbeep.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/xpdev/xpbeep.c b/src/xpdev/xpbeep.c
index f80f8a6f36..f1c56f31df 100644
--- a/src/xpdev/xpbeep.c
+++ b/src/xpdev/xpbeep.c
@@ -634,7 +634,7 @@ void xp_play_sample_thread(void *data)
 			int written=0;
 
 			while(written < sample_size) {
-				ret=alsa_api->snd_pcm_writei(playback_handle, sample_buffer, sample_size);
+				ret=alsa_api->snd_pcm_writei(playback_handle, sample_buffer+written, sample_size-written);
 				if(ret < 0) {
 					if(written==0) {
 						/* Go back and try OSS */
@@ -782,7 +782,7 @@ BOOL DLLCALL xp_play_sample(const unsigned char *sample, size_t sample_size, BOO
 		int written=0;
 
 		while(written < sample_size) {
-			ret=alsa_api->snd_pcm_writei(playback_handle, sample, sample_size);
+			ret=alsa_api->snd_pcm_writei(playback_handle, sample_written, sample_size-written);
 			if(ret < 0) {
 				if(written==0) {
 					/* Go back and try OSS */
-- 
GitLab