diff --git a/dlls/mmdevapi/tests/capture.c b/dlls/mmdevapi/tests/capture.c index 253ba3c762b..5cf61ea8245 100644 --- a/dlls/mmdevapi/tests/capture.c +++ b/dlls/mmdevapi/tests/capture.c @@ -122,7 +122,8 @@ static void test_capture(IAudioClient *ac, HANDLE handle, WAVEFORMATEX *wfx) hr = IAudioCaptureClient_GetBuffer(acc, &data, &frames, NULL, NULL, NULL); ok(hr == E_POINTER, "IAudioCaptureClient_GetBuffer(&ata, &frames, NULL) returns %08x\n", hr); - ok((DWORD_PTR)data == 0xdeadf00d, "data is reset to %p\n", data); + ok(broken((DWORD_PTR)data == 0xdeadf00d) || /* <= win8 */ + data == NULL, "data is reset to %p\n", data); ok(frames == 0xdeadbeef, "frames is reset to %08x\n", frames); ok(flags == 0xabadcafe, "flags is reset to %08x\n", flags); @@ -147,7 +148,8 @@ static void test_capture(IAudioClient *ac, HANDLE handle, WAVEFORMATEX *wfx) sum = pos; }else if (hr == AUDCLNT_S_BUFFER_EMPTY){ ok(!frames, "Amount of frames locked with empty buffer is %u!\n", frames); - ok(data == (void*)0xdeadf00d, "No data changed to %p\n", data); + ok(broken(data == (void*)0xdeadf00d) || /* <= win8 */ + data == NULL, "No data changed to %p\n", data); } trace("Wait'ed position %d pad %u flags %x, amount of frames locked: %u\n", @@ -228,7 +230,8 @@ static void test_capture(IAudioClient *ac, HANDLE handle, WAVEFORMATEX *wfx) hr = IAudioCaptureClient_GetBuffer(acc, &data2, &frames2, &flags, &pos, &qpc); ok(hr == AUDCLNT_E_OUT_OF_ORDER, "Out of order IAudioCaptureClient_GetBuffer returns %08x\n", hr); ok(frames2 == 0xabadcafe, "Out of order frames changed to %x\n", frames2); - ok(data2 == (void*)0xdeadf00d, "Out of order data changed to %p\n", data2); + ok(broken(data2 == (void*)0xdeadf00d) /* <= win8 */ || + data2 == NULL, "Out of order data changed to %p\n", data2); ok(flags == 0xabadcafe, "Out of order flags changed to %x\n", flags); ok(pos == 0xdeadbeef, "Out of order position changed to %x\n", (UINT)pos); ok(qpc == 0xdeadbeef, "Out of order timer changed to %x\n", (UINT)qpc); diff --git a/dlls/winealsa.drv/mmdevdrv.c b/dlls/winealsa.drv/mmdevdrv.c index 4f1270b33c8..5bc71da77ae 100644 --- a/dlls/winealsa.drv/mmdevdrv.c +++ b/dlls/winealsa.drv/mmdevdrv.c @@ -2883,7 +2883,12 @@ static HRESULT WINAPI AudioCaptureClient_GetBuffer(IAudioCaptureClient *iface, TRACE("(%p)->(%p, %p, %p, %p, %p)\n", This, data, frames, flags, devpos, qpcpos); - if(!data || !frames || !flags) + if(!data) + return E_POINTER; + + *data = NULL; + + if(!frames || !flags) return E_POINTER; EnterCriticalSection(&This->lock); diff --git a/dlls/wineandroid.drv/mmdevdrv.c b/dlls/wineandroid.drv/mmdevdrv.c index 1dafe02f4cd..e10b3debf1c 100644 --- a/dlls/wineandroid.drv/mmdevdrv.c +++ b/dlls/wineandroid.drv/mmdevdrv.c @@ -1845,7 +1845,12 @@ static HRESULT WINAPI AudioCaptureClient_GetBuffer(IAudioCaptureClient *iface, TRACE("(%p)->(%p, %p, %p, %p, %p)\n", This, data, frames, flags, devpos, qpcpos); - if(!data || !frames || !flags) + if(!data) + return E_POINTER; + + *data = NULL; + + if(!frames || !flags) return E_POINTER; EnterCriticalSection(&This->lock); diff --git a/dlls/winecoreaudio.drv/mmdevdrv.c b/dlls/winecoreaudio.drv/mmdevdrv.c index be2b5e7e1e9..d595f43007b 100644 --- a/dlls/winecoreaudio.drv/mmdevdrv.c +++ b/dlls/winecoreaudio.drv/mmdevdrv.c @@ -2442,7 +2442,12 @@ static HRESULT WINAPI AudioCaptureClient_GetBuffer(IAudioCaptureClient *iface, TRACE("(%p)->(%p, %p, %p, %p, %p)\n", This, data, frames, flags, devpos, qpcpos); - if(!data || !frames || !flags) + if(!data) + return E_POINTER; + + *data = NULL; + + if(!frames || !flags) return E_POINTER; OSSpinLockLock(&This->lock); diff --git a/dlls/wineoss.drv/mmdevdrv.c b/dlls/wineoss.drv/mmdevdrv.c index dca40ecd771..c6b6e8effe5 100644 --- a/dlls/wineoss.drv/mmdevdrv.c +++ b/dlls/wineoss.drv/mmdevdrv.c @@ -2007,7 +2007,12 @@ static HRESULT WINAPI AudioCaptureClient_GetBuffer(IAudioCaptureClient *iface, TRACE("(%p)->(%p, %p, %p, %p, %p)\n", This, data, frames, flags, devpos, qpcpos); - if(!data || !frames || !flags) + if(!data) + return E_POINTER; + + *data = NULL; + + if(!frames || !flags) return E_POINTER; EnterCriticalSection(&This->lock); diff --git a/dlls/winepulse.drv/mmdevdrv.c b/dlls/winepulse.drv/mmdevdrv.c index 1c647c73d62..61f0e03c9f1 100644 --- a/dlls/winepulse.drv/mmdevdrv.c +++ b/dlls/winepulse.drv/mmdevdrv.c @@ -2511,7 +2511,12 @@ static HRESULT WINAPI AudioCaptureClient_GetBuffer(IAudioCaptureClient *iface, TRACE("(%p)->(%p, %p, %p, %p, %p)\n", This, data, frames, flags, devpos, qpcpos); - if (!data || !frames || !flags) + if (!data) + return E_POINTER; + + *data = NULL; + + if (!frames || !flags) return E_POINTER; pthread_mutex_lock(&pulse_lock);