Fixed buffer underflow in sound code when rate was changed several times.

This commit is contained in:
n-a-c-h
2005-01-12 17:00:34 +00:00
parent 5a41aafe0a
commit 756f75c10b

View File

@@ -966,25 +966,31 @@ void CheckTimers(void)
} }
} }
//Why in the world did someone make this use signed values??? -Nach
void UpdateSound(void *userdata, Uint8 * stream, int len) void UpdateSound(void *userdata, Uint8 * stream, int len)
{ {
int left; int left = Buffer_len - Buffer_head;
left = Buffer_len - Buffer_head; if (left < 0)
{
return;
}
if (left <= len)
{
memcpy(stream, &Buffer[Buffer_head], left);
stream += left;
len -= left;
Buffer_head = 0;
Buffer_fill -= left;
}
if (left <= len) { if (len)
memcpy(stream, &Buffer[Buffer_head], left); {
stream += left; memcpy(stream, &Buffer[Buffer_head], len);
len -= left; Buffer_head += len;
Buffer_head = 0; Buffer_fill -= len;
Buffer_fill -= left; }
}
if (len) {
memcpy(stream, &Buffer[Buffer_head], len);
Buffer_head += len;
Buffer_fill -= len;
}
} }
void sem_sleep(void) void sem_sleep(void)