Module: wine Branch: master Commit: 20276d0b38c9cb466a63c9c296ead13c01a1641c URL: http://source.winehq.org/git/wine.git/?a=commit;h=20276d0b38c9cb466a63c9c296...
Author: Andrew Nguyen arethusa26@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; }