ole32: Verify arguments for CoWaitForMultipleHandles, always initialize index to zero.
This commit is contained in:
parent
f7f2167fe8
commit
bbf6891030
|
@ -4431,6 +4431,17 @@ HRESULT WINAPI CoWaitForMultipleHandles(DWORD dwFlags, DWORD dwTimeout,
|
||||||
TRACE("(0x%08x, 0x%08x, %d, %p, %p)\n", dwFlags, dwTimeout, cHandles,
|
TRACE("(0x%08x, 0x%08x, %d, %p, %p)\n", dwFlags, dwTimeout, cHandles,
|
||||||
pHandles, lpdwindex);
|
pHandles, lpdwindex);
|
||||||
|
|
||||||
|
if (!lpdwindex)
|
||||||
|
return E_INVALIDARG;
|
||||||
|
|
||||||
|
*lpdwindex = 0;
|
||||||
|
|
||||||
|
if (!pHandles)
|
||||||
|
return E_INVALIDARG;
|
||||||
|
|
||||||
|
if (!cHandles)
|
||||||
|
return RPC_E_NO_SYNC;
|
||||||
|
|
||||||
while (TRUE)
|
while (TRUE)
|
||||||
{
|
{
|
||||||
DWORD now = GetTickCount();
|
DWORD now = GetTickCount();
|
||||||
|
|
|
@ -2139,32 +2139,24 @@ static void test_CoWaitForMultipleHandles(void)
|
||||||
|
|
||||||
PostMessageA(hWnd, WM_DDE_FIRST, 0, 0);
|
PostMessageA(hWnd, WM_DDE_FIRST, 0, 0);
|
||||||
hr = CoWaitForMultipleHandles(0, 50, 0, handles, NULL);
|
hr = CoWaitForMultipleHandles(0, 50, 0, handles, NULL);
|
||||||
todo_wine
|
|
||||||
ok(hr == E_INVALIDARG, "expected E_INVALIDARG, got 0x%08x\n", hr);
|
ok(hr == E_INVALIDARG, "expected E_INVALIDARG, got 0x%08x\n", hr);
|
||||||
success = PeekMessageA(&msg, hWnd, WM_DDE_FIRST, WM_DDE_FIRST, PM_REMOVE);
|
success = PeekMessageA(&msg, hWnd, WM_DDE_FIRST, WM_DDE_FIRST, PM_REMOVE);
|
||||||
todo_wine
|
|
||||||
ok(success, "CoWaitForMultipleHandles unexpectedly pumped messages\n");
|
ok(success, "CoWaitForMultipleHandles unexpectedly pumped messages\n");
|
||||||
|
|
||||||
index = 0xdeadbeef;
|
index = 0xdeadbeef;
|
||||||
PostMessageA(hWnd, WM_DDE_FIRST, 0, 0);
|
PostMessageA(hWnd, WM_DDE_FIRST, 0, 0);
|
||||||
hr = CoWaitForMultipleHandles(0, 50, 0, NULL, &index);
|
hr = CoWaitForMultipleHandles(0, 50, 0, NULL, &index);
|
||||||
todo_wine
|
|
||||||
ok(hr == E_INVALIDARG, "expected E_INVALIDARG, got 0x%08x\n", hr);
|
ok(hr == E_INVALIDARG, "expected E_INVALIDARG, got 0x%08x\n", hr);
|
||||||
todo_wine
|
|
||||||
ok(index == 0, "expected index 0, got %u\n", index);
|
ok(index == 0, "expected index 0, got %u\n", index);
|
||||||
success = PeekMessageA(&msg, hWnd, WM_DDE_FIRST, WM_DDE_FIRST, PM_REMOVE);
|
success = PeekMessageA(&msg, hWnd, WM_DDE_FIRST, WM_DDE_FIRST, PM_REMOVE);
|
||||||
todo_wine
|
|
||||||
ok(success, "CoWaitForMultipleHandles unexpectedly pumped messages\n");
|
ok(success, "CoWaitForMultipleHandles unexpectedly pumped messages\n");
|
||||||
|
|
||||||
index = 0xdeadbeef;
|
index = 0xdeadbeef;
|
||||||
PostMessageA(hWnd, WM_DDE_FIRST, 0, 0);
|
PostMessageA(hWnd, WM_DDE_FIRST, 0, 0);
|
||||||
hr = CoWaitForMultipleHandles(0, 50, 0, handles, &index);
|
hr = CoWaitForMultipleHandles(0, 50, 0, handles, &index);
|
||||||
todo_wine
|
|
||||||
ok(hr == RPC_E_NO_SYNC, "expected RPC_E_NO_SYNC, got 0x%08x\n", hr);
|
ok(hr == RPC_E_NO_SYNC, "expected RPC_E_NO_SYNC, got 0x%08x\n", hr);
|
||||||
todo_wine
|
|
||||||
ok(index == 0, "expected index 0, got %u\n", index);
|
ok(index == 0, "expected index 0, got %u\n", index);
|
||||||
success = PeekMessageA(&msg, hWnd, WM_DDE_FIRST, WM_DDE_FIRST, PM_REMOVE);
|
success = PeekMessageA(&msg, hWnd, WM_DDE_FIRST, WM_DDE_FIRST, PM_REMOVE);
|
||||||
todo_wine
|
|
||||||
ok(success, "CoWaitForMultipleHandles unexpectedly pumped messages\n");
|
ok(success, "CoWaitForMultipleHandles unexpectedly pumped messages\n");
|
||||||
|
|
||||||
index = 0xdeadbeef;
|
index = 0xdeadbeef;
|
||||||
|
@ -2187,7 +2179,6 @@ static void test_CoWaitForMultipleHandles(void)
|
||||||
PostMessageA(hWnd, WM_DDE_FIRST, 0, 0);
|
PostMessageA(hWnd, WM_DDE_FIRST, 0, 0);
|
||||||
hr = CoWaitForMultipleHandles(0, 50, 2, handles, &index);
|
hr = CoWaitForMultipleHandles(0, 50, 2, handles, &index);
|
||||||
ok(hr == RPC_S_CALLPENDING, "expected RPC_S_CALLPENDING, got 0x%08x\n", hr);
|
ok(hr == RPC_S_CALLPENDING, "expected RPC_S_CALLPENDING, got 0x%08x\n", hr);
|
||||||
todo_wine
|
|
||||||
ok(index == 0 || broken(index == 0xdeadbeef) /* Win 8 */, "expected index 0, got %u\n", index);
|
ok(index == 0 || broken(index == 0xdeadbeef) /* Win 8 */, "expected index 0, got %u\n", index);
|
||||||
success = PeekMessageA(&msg, hWnd, WM_DDE_FIRST, WM_DDE_FIRST, PM_REMOVE);
|
success = PeekMessageA(&msg, hWnd, WM_DDE_FIRST, WM_DDE_FIRST, PM_REMOVE);
|
||||||
ok(!success, "CoWaitForMultipleHandles didn't pump any messages\n");
|
ok(!success, "CoWaitForMultipleHandles didn't pump any messages\n");
|
||||||
|
@ -2209,7 +2200,6 @@ static void test_CoWaitForMultipleHandles(void)
|
||||||
PostMessageA(hWnd, WM_DDE_FIRST, 0, 0);
|
PostMessageA(hWnd, WM_DDE_FIRST, 0, 0);
|
||||||
hr = CoWaitForMultipleHandles(0, 50, 2, handles, &index);
|
hr = CoWaitForMultipleHandles(0, 50, 2, handles, &index);
|
||||||
ok(hr == RPC_S_CALLPENDING, "expected RPC_S_CALLPENDING, got 0x%08x\n", hr);
|
ok(hr == RPC_S_CALLPENDING, "expected RPC_S_CALLPENDING, got 0x%08x\n", hr);
|
||||||
todo_wine
|
|
||||||
ok(index == 0 || broken(index == 0xdeadbeef) /* Win 8 */, "expected index 0, got %u\n", index);
|
ok(index == 0 || broken(index == 0xdeadbeef) /* Win 8 */, "expected index 0, got %u\n", index);
|
||||||
success = PeekMessageA(&msg, hWnd, WM_DDE_FIRST, WM_DDE_FIRST, PM_REMOVE);
|
success = PeekMessageA(&msg, hWnd, WM_DDE_FIRST, WM_DDE_FIRST, PM_REMOVE);
|
||||||
ok(!success, "CoWaitForMultipleHandles didn't pump any messages\n");
|
ok(!success, "CoWaitForMultipleHandles didn't pump any messages\n");
|
||||||
|
@ -2239,7 +2229,6 @@ static void test_CoWaitForMultipleHandles(void)
|
||||||
PostMessageA(hWnd, WM_DDE_FIRST, 0, 0);
|
PostMessageA(hWnd, WM_DDE_FIRST, 0, 0);
|
||||||
hr = CoWaitForMultipleHandles(COWAIT_ALERTABLE, 50, 2, handles, &index);
|
hr = CoWaitForMultipleHandles(COWAIT_ALERTABLE, 50, 2, handles, &index);
|
||||||
ok(hr == RPC_S_CALLPENDING, "expected RPC_S_CALLPENDING, got 0x%08x\n", hr);
|
ok(hr == RPC_S_CALLPENDING, "expected RPC_S_CALLPENDING, got 0x%08x\n", hr);
|
||||||
todo_wine
|
|
||||||
ok(index == 0 || broken(index == 0xdeadbeef) /* Win 8 */, "expected index 0, got %u\n", index);
|
ok(index == 0 || broken(index == 0xdeadbeef) /* Win 8 */, "expected index 0, got %u\n", index);
|
||||||
success = PeekMessageA(&msg, hWnd, WM_DDE_FIRST, WM_DDE_FIRST, PM_REMOVE);
|
success = PeekMessageA(&msg, hWnd, WM_DDE_FIRST, WM_DDE_FIRST, PM_REMOVE);
|
||||||
ok(!success, "CoWaitForMultipleHandles didn't pump any messages\n");
|
ok(!success, "CoWaitForMultipleHandles didn't pump any messages\n");
|
||||||
|
@ -2263,7 +2252,6 @@ static void test_CoWaitForMultipleHandles(void)
|
||||||
ok(success, "PeekMessageA returned FALSE\n");
|
ok(success, "PeekMessageA returned FALSE\n");
|
||||||
hr = CoWaitForMultipleHandles(0, 50, 2, handles, &index);
|
hr = CoWaitForMultipleHandles(0, 50, 2, handles, &index);
|
||||||
ok(hr == RPC_S_CALLPENDING, "expected RPC_S_CALLPENDING, got 0x%08x\n", hr);
|
ok(hr == RPC_S_CALLPENDING, "expected RPC_S_CALLPENDING, got 0x%08x\n", hr);
|
||||||
todo_wine
|
|
||||||
ok(index == 0 || broken(index == 0xdeadbeef) /* Win 8 */, "expected index 0, got %u\n", index);
|
ok(index == 0 || broken(index == 0xdeadbeef) /* Win 8 */, "expected index 0, got %u\n", index);
|
||||||
success = PeekMessageA(&msg, hWnd, WM_DDE_FIRST, WM_DDE_FIRST, PM_REMOVE);
|
success = PeekMessageA(&msg, hWnd, WM_DDE_FIRST, WM_DDE_FIRST, PM_REMOVE);
|
||||||
ok(!success, "CoWaitForMultipleHandles didn't pump any messages\n");
|
ok(!success, "CoWaitForMultipleHandles didn't pump any messages\n");
|
||||||
|
@ -2278,7 +2266,6 @@ static void test_CoWaitForMultipleHandles(void)
|
||||||
ok(hr == RPC_S_CALLPENDING || broken(hr == E_INVALIDARG) || broken(hr == S_OK) /* Win 8 */,
|
ok(hr == RPC_S_CALLPENDING || broken(hr == E_INVALIDARG) || broken(hr == S_OK) /* Win 8 */,
|
||||||
"expected RPC_S_CALLPENDING, got 0x%08x\n", hr);
|
"expected RPC_S_CALLPENDING, got 0x%08x\n", hr);
|
||||||
ReleaseSemaphore(handles[1], 1, NULL);
|
ReleaseSemaphore(handles[1], 1, NULL);
|
||||||
todo_wine
|
|
||||||
ok(index == 0 || broken(index == 1) /* Win 8 */, "expected index 0, got %u\n", index);
|
ok(index == 0 || broken(index == 1) /* Win 8 */, "expected index 0, got %u\n", index);
|
||||||
success = PeekMessageA(&msg, hWnd, WM_DDE_FIRST, WM_DDE_FIRST, PM_REMOVE);
|
success = PeekMessageA(&msg, hWnd, WM_DDE_FIRST, WM_DDE_FIRST, PM_REMOVE);
|
||||||
ok(!success || broken(success && hr == E_INVALIDARG),
|
ok(!success || broken(success && hr == E_INVALIDARG),
|
||||||
|
|
Loading…
Reference in New Issue