Andrew Nguyen : kernel32: Revise SetThreadIdealProcessor to return success.

Alexandre Julliard julliard at winehq.org
Fri Aug 7 08:49:39 CDT 2009


Module: wine
Branch: master
Commit: 20276d0b38c9cb466a63c9c296ead13c01a1641c
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=20276d0b38c9cb466a63c9c296ead13c01a1641c

Author: Andrew Nguyen <arethusa26 at gmail.com>
Date:   Fri Aug  7 06:39:47 2009 -0500

kernel32: Revise SetThreadIdealProcessor to return success.

---

 dlls/kernel32/tests/thread.c |   32 +++++++++++++++++---------------
 dlls/kernel32/thread.c       |    8 ++++++--
 2 files changed, 23 insertions(+), 17 deletions(-)

diff --git a/dlls/kernel32/tests/thread.c b/dlls/kernel32/tests/thread.c
index 2c699b4..e80c63e 100644
--- a/dlls/kernel32/tests/thread.c
+++ b/dlls/kernel32/tests/thread.c
@@ -812,22 +812,24 @@ static VOID test_thread_processor(void)
       "SetThreadAffinityMask passed for an illegal processor\n");
 /* NOTE: This only works on WinNT/2000/XP) */
    if (pSetThreadIdealProcessor) {
-     todo_wine {
-       SetLastError(0);
-       error=pSetThreadIdealProcessor(curthread,0);
-       if (GetLastError()!=ERROR_CALL_NOT_IMPLEMENTED) {
-         ok(error!=-1, "SetThreadIdealProcessor failed\n");
-       }
-     }
-     if (GetLastError()!=ERROR_CALL_NOT_IMPLEMENTED) {
-       error=pSetThreadIdealProcessor(curthread,MAXIMUM_PROCESSORS+1);
-       ok(error==-1,
-          "SetThreadIdealProcessor succeeded with an illegal processor #\n");
-       todo_wine {
-         error=pSetThreadIdealProcessor(curthread,MAXIMUM_PROCESSORS);
-         ok(error==0, "SetThreadIdealProcessor returned an incorrect value\n");
-       }
+     SetLastError(0xdeadbeef);
+     error=pSetThreadIdealProcessor(curthread,0);
+     if (GetLastError()==ERROR_CALL_NOT_IMPLEMENTED)
+     {
+       win_skip("SetThreadIdealProcessor is not implemented\n");
+       return;
      }
+     ok(error!=-1, "SetThreadIdealProcessor failed\n");
+
+     SetLastError(0xdeadbeef);
+     error=pSetThreadIdealProcessor(curthread,MAXIMUM_PROCESSORS+1);
+     ok(error==-1,
+        "SetThreadIdealProcessor succeeded with an illegal processor #\n");
+     ok(GetLastError()==ERROR_INVALID_PARAMETER,
+        "Expected ERROR_INVALID_PARAMETER, got %d\n", GetLastError());
+
+     error=pSetThreadIdealProcessor(curthread,MAXIMUM_PROCESSORS);
+     ok(error==0, "SetThreadIdealProcessor returned an incorrect value\n");
    }
 }
 
diff --git a/dlls/kernel32/thread.c b/dlls/kernel32/thread.c
index 0b899c2..b037f44 100644
--- a/dlls/kernel32/thread.c
+++ b/dlls/kernel32/thread.c
@@ -413,8 +413,12 @@ DWORD WINAPI SetThreadIdealProcessor(
     DWORD dwIdealProcessor)  /* [in] Specifies the new preferred processor */
 {
     FIXME("(%p): stub\n",hThread);
-    SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-    return -1L;
+    if (dwIdealProcessor > MAXIMUM_PROCESSORS)
+    {
+        SetLastError(ERROR_INVALID_PARAMETER);
+        return ~0u;
+    }
+    return 0;
 }
 
 




More information about the wine-cvs mailing list