diff --git a/src/xpdev/xpbeep.c b/src/xpdev/xpbeep.c
index ddd3b6e022daa627a92f16060d36bbfb6806e3b3..a5d11a9f478ad748b8996ced588e9f7d38b26dcb 100644
--- a/src/xpdev/xpbeep.c
+++ b/src/xpdev/xpbeep.c
@@ -833,10 +833,6 @@ do_xp_play_sample(unsigned char *sampo, size_t sz, int *freed)
 #if defined(WITH_PORTAUDIO) || defined(_WIN32) || defined(WITH_SDL_AUDIO)
 	int need_copy = 0;
 #endif
-#ifdef AFMT_U8
-	size_t wr;
-	int	i;
-#endif
 
 #ifdef WITH_PORTAUDIO
 	if(handle_type==SOUND_DEVICE_PORTAUDIO) {
@@ -977,14 +973,14 @@ do_xp_play_sample(unsigned char *sampo, size_t sz, int *freed)
 
 #ifdef AFMT_U8
 	if (handle_type == SOUND_DEVICE_OSS) {
+		size_t wr = 0;
 		wr = 0;
 		while (wr < sz) {
-			i = write(dsp, samp + wr, sz - wr);
-			if (i >= 0) {
-				if ((SIZE_MAX - i) < wr)
-					wr = SIZE_MAX;
+			ssize_t i = write(dsp, samp + wr, sz - wr);
+			if (i >= 0)
 				wr += i;
-			}
+			else
+				return false;
 		}
 		return true;
 	}