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