mirror of
https://github.com/wine-mirror/wine
synced 2024-07-01 07:14:31 +00:00
dsound: Set position past the end of the buffer is invalid.
This commit is contained in:
parent
9a42affc34
commit
1941a91536
|
@ -574,12 +574,15 @@ static HRESULT WINAPI IDirectSoundBufferImpl_SetCurrentPosition(IDirectSoundBuff
|
|||
IDirectSoundBufferImpl *This = impl_from_IDirectSoundBuffer8(iface);
|
||||
HRESULT hres = DS_OK;
|
||||
|
||||
TRACE("(%p,%ld)\n",This,newpos);
|
||||
TRACE("(%p,%lu)\n",This,newpos);
|
||||
|
||||
if (newpos >= This->buflen) {
|
||||
return E_INVALIDARG;
|
||||
}
|
||||
|
||||
AcquireSRWLockExclusive(&This->lock);
|
||||
|
||||
/* start mixing from this new location instead */
|
||||
newpos %= This->buflen;
|
||||
newpos -= newpos%This->pwfx->nBlockAlign;
|
||||
This->sec_mixpos = newpos;
|
||||
|
||||
|
|
|
@ -919,6 +919,13 @@ static HRESULT test_block_align(LPGUID lpGuid)
|
|||
rc = IDirectSoundBuffer_GetCurrentPosition(secondary, &pos2, NULL);
|
||||
ok(rc == DS_OK, "Could not get new position: %08lx\n", rc);
|
||||
ok(pos == pos2, "Positions not the same! Old position: %ld, new position: %ld\n", pos, pos2);
|
||||
|
||||
/* Set position to past the end of the buffer */
|
||||
rc = IDirectSoundBuffer_SetCurrentPosition(secondary, wfx.nAvgBytesPerSec + 100);
|
||||
ok(rc == E_INVALIDARG, "Set position to %lu succeeded\n", wfx.nAvgBytesPerSec + 100);
|
||||
rc = IDirectSoundBuffer_GetCurrentPosition(secondary, &pos2, NULL);
|
||||
ok(rc == DS_OK, "Could not get new position: %08lx\n", rc);
|
||||
ok(pos == pos2, "Positions not the same! Old position: %ld, new position: %ld\n", pos, pos2);
|
||||
}
|
||||
ref=IDirectSoundBuffer_Release(secondary);
|
||||
ok(ref==0,"IDirectSoundBuffer_Release() secondary has %d references, "
|
||||
|
|
Loading…
Reference in New Issue
Block a user