Greg Geldorp : shell32/tests: Fix race conditions.
Alexandre Julliard
julliard at winehq.org
Tue Dec 28 10:48:20 CST 2010
Module: wine
Branch: master
Commit: 519c28894693bc2e597fc794d9114d5ccb1cd311
URL: http://source.winehq.org/git/wine.git/?a=commit;h=519c28894693bc2e597fc794d9114d5ccb1cd311
Author: Greg Geldorp <ggeldorp at vmware.com>
Date: Tue Dec 28 13:34:11 2010 +0100
shell32/tests: Fix race conditions.
---
dlls/shell32/tests/shlexec.c | 17 +++++++----------
1 files changed, 7 insertions(+), 10 deletions(-)
diff --git a/dlls/shell32/tests/shlexec.c b/dlls/shell32/tests/shlexec.c
index c32a065..252aed7 100644
--- a/dlls/shell32/tests/shlexec.c
+++ b/dlls/shell32/tests/shlexec.c
@@ -57,6 +57,7 @@ static char tmpdir[MAX_PATH];
static char child_file[MAX_PATH];
static DLLVERSIONINFO dllver;
static BOOL skip_noassoc_tests = FALSE;
+static HANDLE dde_ready_event;
/***
@@ -572,13 +573,14 @@ static void doChild(int argc, char** argv)
timer = SetTimer(NULL, 0, 2500, childTimeout);
- dde_ready = CreateEvent(NULL, FALSE, FALSE, "winetest_shlexec_dde_ready");
+ dde_ready = OpenEvent(EVENT_MODIFY_STATE, FALSE, "winetest_shlexec_dde_ready");
SetEvent(dde_ready);
CloseHandle(dde_ready);
while (GetMessage(&msg, NULL, 0, 0))
DispatchMessage(&msg);
+ Sleep(500);
KillTimer(NULL, timer);
assert(DdeNameService(ddeInst, hszApplication, 0L, DNS_UNREGISTER));
assert(DdeFreeStringHandle(ddeInst, hszTopic));
@@ -587,7 +589,7 @@ static void doChild(int argc, char** argv)
}
else
{
- dde_ready = CreateEvent(NULL, FALSE, FALSE, "winetest_shlexec_dde_ready");
+ dde_ready = OpenEvent(EVENT_MODIFY_STATE, FALSE, "winetest_shlexec_dde_ready");
SetEvent(dde_ready);
CloseHandle(dde_ready);
}
@@ -1613,14 +1615,7 @@ static dde_tests_t dde_tests[] =
static DWORD WINAPI hooked_WaitForInputIdle(HANDLE process, DWORD timeout)
{
- HANDLE dde_ready;
- DWORD wait_result;
-
- dde_ready = CreateEventA(NULL, FALSE, FALSE, "winetest_shlexec_dde_ready");
- wait_result = WaitForSingleObject(dde_ready, timeout);
- CloseHandle(dde_ready);
-
- return wait_result;
+ return WaitForSingleObject(dde_ready_event, timeout);
}
/*
@@ -1732,7 +1727,9 @@ static void test_dde(void)
}
ddeExec[0] = 0;
+ dde_ready_event = CreateEventA(NULL, FALSE, FALSE, "winetest_shlexec_dde_ready");
rc = shell_execute_ex(SEE_MASK_FLAG_DDEWAIT | SEE_MASK_FLAG_NO_UI, NULL, filename, NULL, NULL);
+ CloseHandle(dde_ready_event);
if ((test->todo & 0x1)==0)
{
ok(32 < rc, "%s failed: rc=%d err=%d\n", shell_call,
More information about the wine-cvs
mailing list