Peter Oberndorfer : kernel32: VerifyConsoleIoHandle does not set last error value.
Alexandre Julliard
julliard at winehq.org
Thu Sep 23 12:43:48 CDT 2010
Module: wine
Branch: master
Commit: 297b054e74bb0f0e5b6be65b7e6df57902fdf9e1
URL: http://source.winehq.org/git/wine.git/?a=commit;h=297b054e74bb0f0e5b6be65b7e6df57902fdf9e1
Author: Peter Oberndorfer <kumbayo84 at 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);
More information about the wine-cvs
mailing list