Module: wine Branch: master Commit: 297b054e74bb0f0e5b6be65b7e6df57902fdf9e1 URL: http://source.winehq.org/git/wine.git/?a=commit;h=297b054e74bb0f0e5b6be65b7e...
Author: Peter Oberndorfer kumbayo84@arcor.de Date: Wed Sep 22 19:54:36 2010 +0200
kernel32: VerifyConsoleIoHandle does not set last error value.
---
dlls/kernel32/console.c | 2 +- dlls/kernel32/tests/console.c | 53 +++++++++++++++++++++++++++++++++++++++++ dlls/kernel32/tests/sync.c | 4 +- 3 files changed, 56 insertions(+), 3 deletions(-)
diff --git a/dlls/kernel32/console.c b/dlls/kernel32/console.c index 064cd53..45e6089 100644 --- a/dlls/kernel32/console.c +++ b/dlls/kernel32/console.c @@ -441,7 +441,7 @@ BOOL WINAPI VerifyConsoleIoHandle(HANDLE handle) SERVER_START_REQ(get_console_mode) { req->handle = console_handle_unmap(handle); - ret = !wine_server_call_err( req ); + ret = !wine_server_call( req ); } SERVER_END_REQ; return ret; diff --git a/dlls/kernel32/tests/console.c b/dlls/kernel32/tests/console.c index 3d8ae93..1bc0d34 100644 --- a/dlls/kernel32/tests/console.c +++ b/dlls/kernel32/tests/console.c @@ -27,6 +27,7 @@ static BOOL (WINAPI *pGetConsoleInputExeNameA)(DWORD, LPSTR); static DWORD (WINAPI *pGetConsoleProcessList)(LPDWORD, DWORD); static HANDLE (WINAPI *pOpenConsoleW)(LPCWSTR,DWORD,BOOL,DWORD); static BOOL (WINAPI *pSetConsoleInputExeNameA)(LPCSTR); +static BOOL (WINAPI *pVerifyConsoleIoHandle)(HANDLE handle);
/* DEFAULT_ATTRIB is used for all initial filling of the console. * all modifications are made with TEST_ATTRIB so that we could check @@ -68,6 +69,7 @@ static void init_function_pointers(void) KERNEL32_GET_PROC(GetConsoleProcessList); KERNEL32_GET_PROC(OpenConsoleW); KERNEL32_GET_PROC(SetConsoleInputExeNameA); + KERNEL32_GET_PROC(VerifyConsoleIoHandle);
#undef KERNEL32_GET_PROC } @@ -1083,6 +1085,56 @@ static void test_OpenConsoleW(void) CloseHandle(ret); }
+static void test_VerifyConsoleIoHandle(void) +{ + BOOL ret; + DWORD error; + HANDLE handle; + + if (!pVerifyConsoleIoHandle) + { + win_skip("VerifyConsoleIoHandle is not available\n"); + return; + } + + /* invalid handle */ + SetLastError(0xdeadbeef); + ret = pVerifyConsoleIoHandle((HANDLE)0xdeadbee0); + error = GetLastError(); + ok(!ret, "expected VerifyConsoleIoHandle to fail\n"); + ok(error == 0xdeadbeef, "wrong GetLastError() %d\n", error); + + /* invalid handle + 1 */ + SetLastError(0xdeadbeef); + ret = pVerifyConsoleIoHandle((HANDLE)0xdeadbee1); + error = GetLastError(); + ok(!ret, "expected VerifyConsoleIoHandle to fail\n"); + ok(error == 0xdeadbeef, "wrong GetLastError() %d\n", error); + + /* invalid handle + 2 */ + SetLastError(0xdeadbeef); + ret = pVerifyConsoleIoHandle((HANDLE)0xdeadbee2); + error = GetLastError(); + ok(!ret, "expected VerifyConsoleIoHandle to fail\n"); + ok(error == 0xdeadbeef, "wrong GetLastError() %d\n", error); + + /* invalid handle + 3 */ + SetLastError(0xdeadbeef); + ret = pVerifyConsoleIoHandle((HANDLE)0xdeadbee3); + error = GetLastError(); + ok(!ret, "expected VerifyConsoleIoHandle to fail\n"); + ok(error == 0xdeadbeef, "wrong GetLastError() %d\n", error); + + handle = GetStdHandle(STD_INPUT_HANDLE); + /* valid handle */ + SetLastError(0xdeadbeef); + ret = pVerifyConsoleIoHandle(handle); + error = GetLastError(); + ok(ret, "expected VerifyConsoleIoHandle to succeed\n"); + ok(error == 0xdeadbeef, "wrong GetLastError() %d\n", error); +} + + START_TEST(console) { HANDLE hConIn, hConOut; @@ -1134,4 +1186,5 @@ START_TEST(console)
test_GetConsoleProcessList(); test_OpenConsoleW(); + test_VerifyConsoleIoHandle(); } diff --git a/dlls/kernel32/tests/sync.c b/dlls/kernel32/tests/sync.c index 30811b5..94b2963 100644 --- a/dlls/kernel32/tests/sync.c +++ b/dlls/kernel32/tests/sync.c @@ -1000,7 +1000,7 @@ static void test_WaitForSingleObject(void) SetLastError(0xdeadbeef); ret = WaitForSingleObject(modify_handle(nonsignaled, 3), 0); ok(ret == WAIT_TIMEOUT, "expected WAIT_TIMEOUT, got %d\n", ret); - todo_wine ok(GetLastError() == 0xdeadbeef, "expected 0xdeadbeef, got %d\n", GetLastError()); + ok(GetLastError() == 0xdeadbeef, "expected 0xdeadbeef, got %d\n", GetLastError());
/* valid handle with different values for lower 2 bits */ SetLastError(0xdeadbeef); @@ -1021,7 +1021,7 @@ static void test_WaitForSingleObject(void) SetLastError(0xdeadbeef); ret = WaitForSingleObject(modify_handle(signaled, 3), 0); ok(ret == WAIT_OBJECT_0, "expected WAIT_OBJECT_0, got %d\n", ret); - todo_wine ok(GetLastError() == 0xdeadbeef, "expected 0xdeadbeef, got %d\n", GetLastError()); + ok(GetLastError() == 0xdeadbeef, "expected 0xdeadbeef, got %d\n", GetLastError());
CloseHandle(signaled); CloseHandle(nonsignaled);