Fixed buffer underflow in sound code when rate was changed several times.
This commit is contained in:
@@ -966,13 +966,18 @@ void CheckTimers(void)
|
||||
}
|
||||
}
|
||||
|
||||
//Why in the world did someone make this use signed values??? -Nach
|
||||
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) {
|
||||
if (left <= len)
|
||||
{
|
||||
memcpy(stream, &Buffer[Buffer_head], left);
|
||||
stream += left;
|
||||
len -= left;
|
||||
@@ -980,7 +985,8 @@ void UpdateSound(void *userdata, Uint8 * stream, int len)
|
||||
Buffer_fill -= left;
|
||||
}
|
||||
|
||||
if (len) {
|
||||
if (len)
|
||||
{
|
||||
memcpy(stream, &Buffer[Buffer_head], len);
|
||||
Buffer_head += len;
|
||||
Buffer_fill -= len;
|
||||
|
||||
Reference in New Issue
Block a user