From 39208d4d6062c5e0b690b1fae706e1928ae8633a Mon Sep 17 00:00:00 2001 From: Andrew Nguyen Date: Wed, 31 Mar 2010 18:54:07 -0600 Subject: [PATCH] kernel32: Don't set last error on success in OpenConsoleW. --- dlls/kernel32/console.c | 1 - dlls/kernel32/tests/console.c | 19 +++++++++++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/dlls/kernel32/console.c b/dlls/kernel32/console.c index a5a66076c95..f682ca1452f 100644 --- a/dlls/kernel32/console.c +++ b/dlls/kernel32/console.c @@ -307,7 +307,6 @@ HANDLE WINAPI OpenConsoleW(LPCWSTR name, DWORD access, BOOL inherit, DWORD creat req->access = access; req->attributes = inherit ? OBJ_INHERIT : 0; req->share = FILE_SHARE_READ | FILE_SHARE_WRITE; - SetLastError(0); wine_server_call_err( req ); ret = wine_server_ptr_handle( reply->handle ); } diff --git a/dlls/kernel32/tests/console.c b/dlls/kernel32/tests/console.c index 43017c1bc84..3d8ae9387d8 100644 --- a/dlls/kernel32/tests/console.c +++ b/dlls/kernel32/tests/console.c @@ -1062,6 +1062,25 @@ static void test_OpenConsoleW(void) "Expected GetLastError() to return %u for index %d, got %u\n", invalid_table[index].gle, index, GetLastError()); } + + /* OpenConsoleW should not touch the last error on success. */ + SetLastError(0xdeadbeef); + ret = pOpenConsoleW(coninW, GENERIC_READ | GENERIC_WRITE, FALSE, OPEN_EXISTING); + ok(ret != INVALID_HANDLE_VALUE, + "Expected OpenConsoleW to return a valid handle\n"); + ok(GetLastError() == 0xdeadbeef, + "Expected the last error to be untouched, got %u\n", GetLastError()); + if (ret != INVALID_HANDLE_VALUE) + CloseHandle(ret); + + SetLastError(0xdeadbeef); + ret = pOpenConsoleW(conoutW, GENERIC_READ | GENERIC_WRITE, FALSE, OPEN_EXISTING); + ok(ret != INVALID_HANDLE_VALUE, + "Expected OpenConsoleW to return a valid handle\n"); + ok(GetLastError() == 0xdeadbeef, + "Expected the last error to be untouched, got %u\n", GetLastError()); + if (ret != INVALID_HANDLE_VALUE) + CloseHandle(ret); } START_TEST(console)