Bryan Mayland : kernel:
WaitForMultipleObjectsEx should accept up to MAXIMUM_WAIT_OBJECTS.
Alexandre Julliard
julliard at wine.codeweavers.com
Wed Mar 22 04:56:14 CST 2006
Module: wine
Branch: refs/heads/master
Commit: 98fd541de84c71496e773f3990ae1a139feb2e18
URL: http://source.winehq.org/git/?p=wine.git;a=commit;h=98fd541de84c71496e773f3990ae1a139feb2e18
Author: Bryan Mayland <bmayland at leoninedev.com>
Date: Tue Mar 21 16:45:40 2006 -0500
kernel: WaitForMultipleObjectsEx should accept up to MAXIMUM_WAIT_OBJECTS.
---
dlls/kernel/sync.c | 2 +-
dlls/kernel/tests/sync.c | 15 ++++++++++++++-
2 files changed, 15 insertions(+), 2 deletions(-)
diff --git a/dlls/kernel/sync.c b/dlls/kernel/sync.c
index 5a2535e..cec44f5 100644
--- a/dlls/kernel/sync.c
+++ b/dlls/kernel/sync.c
@@ -173,7 +173,7 @@ DWORD WINAPI WaitForMultipleObjectsEx( D
HANDLE hloc[MAXIMUM_WAIT_OBJECTS];
unsigned int i;
- if (count >= MAXIMUM_WAIT_OBJECTS)
+ if (count > MAXIMUM_WAIT_OBJECTS)
{
SetLastError(ERROR_INVALID_PARAMETER);
return WAIT_FAILED;
diff --git a/dlls/kernel/tests/sync.c b/dlls/kernel/tests/sync.c
index 6d7bc88..a7f6408 100644
--- a/dlls/kernel/tests/sync.c
+++ b/dlls/kernel/tests/sync.c
@@ -31,7 +31,8 @@ static void test_signalandwait(void)
DWORD (WINAPI *pSignalObjectAndWait)(HANDLE, HANDLE, DWORD, BOOL);
HMODULE kernel32;
DWORD r;
- HANDLE event[2], semaphore[2], file;
+ int i;
+ HANDLE event[2], maxevents[MAXIMUM_WAIT_OBJECTS], semaphore[2], file;
kernel32 = GetModuleHandle("kernel32");
pSignalObjectAndWait = (void*) GetProcAddress(kernel32, "SignalObjectAndWait");
@@ -83,6 +84,18 @@ static void test_signalandwait(void)
CloseHandle(event[0]);
CloseHandle(event[1]);
+ /* create the maximum number of events and make sure
+ * we can wait on that many */
+ for (i=0; i<MAXIMUM_WAIT_OBJECTS; i++)
+ {
+ maxevents[i] = CreateEvent(NULL, 1, 1, NULL);
+ ok( maxevents[i] != 0, "should create enough events\n");
+ }
+ r = WaitForMultipleObjects(MAXIMUM_WAIT_OBJECTS, maxevents, 0, 0);
+ ok( r != WAIT_FAILED && r != WAIT_TIMEOUT, "should succeed\n");
+
+ for (i=0; i<MAXIMUM_WAIT_OBJECTS; i++)
+ if (maxevents[i]) CloseHandle(maxevents[i]);
/* semaphores */
semaphore[0] = CreateSemaphore( NULL, 0, 1, NULL );
More information about the wine-cvs
mailing list