Module: wine Branch: master Commit: 8a529d60e285308023bc56e7300a2a864289ae60 URL: http://source.winehq.org/git/wine.git/?a=commit;h=8a529d60e285308023bc56e730...
Author: Eric Pouech eric.pouech@orange.fr Date: Tue May 10 22:02:35 2011 +0200
kernel32: In CreateFile, when trying to open the CON special DOS file, force OPEN_EXISTING as creation flag.
---
dlls/kernel32/file.c | 4 ++-- dlls/kernel32/tests/console.c | 18 ------------------ 2 files changed, 2 insertions(+), 20 deletions(-)
diff --git a/dlls/kernel32/file.c b/dlls/kernel32/file.c index 6ee243e..537ea0a 100644 --- a/dlls/kernel32/file.c +++ b/dlls/kernel32/file.c @@ -1322,10 +1322,10 @@ HANDLE WINAPI CreateFileW( LPCWSTR filename, DWORD access, DWORD sharing, switch (access & (GENERIC_READ|GENERIC_WRITE)) { case GENERIC_READ: - ret = OpenConsoleW(coninW, access, (sa && sa->bInheritHandle), creation); + ret = OpenConsoleW(coninW, access, (sa && sa->bInheritHandle), OPEN_EXISTING); goto done; case GENERIC_WRITE: - ret = OpenConsoleW(conoutW, access, (sa && sa->bInheritHandle), creation); + ret = OpenConsoleW(conoutW, access, (sa && sa->bInheritHandle), OPEN_EXISTING); goto done; default: SetLastError( ERROR_FILE_NOT_FOUND ); diff --git a/dlls/kernel32/tests/console.c b/dlls/kernel32/tests/console.c index 0cd88a3..07a090b 100644 --- a/dlls/kernel32/tests/console.c +++ b/dlls/kernel32/tests/console.c @@ -1002,7 +1002,6 @@ static void test_OpenCON(void)
for (i = 0; i < sizeof(accesses) / sizeof(accesses[0]); i++) { - if (accesses[i] != OPEN_EXISTING) todo_wine { h = CreateFileW(conW, GENERIC_WRITE, 0, NULL, accesses[i], 0, NULL); ok(h != INVALID_HANDLE_VALUE, "Expected to open the CON device on write (%x)\n", accesses[i]); CloseHandle(h); @@ -1018,23 +1017,6 @@ static void test_OpenCON(void) ok(h != INVALID_HANDLE_VALUE, "Expected to open the CON device on read (%x)\n", accesses[i]); } CloseHandle(h); - } else { - h = CreateFileW(conW, GENERIC_WRITE, 0, NULL, accesses[i], 0, NULL); - ok(h != INVALID_HANDLE_VALUE, "Expected to open the CON device on write (%x)\n", accesses[i]); - CloseHandle(h); - - h = CreateFileW(conW, GENERIC_READ, 0, NULL, accesses[i], 0, NULL); - /* Windows versions differ here: - * MSDN states in CreateFile that TRUNCATE_EXISTING requires GENERIC_WRITE - * NT, XP, Vista comply, but Win7 doesn't and allows to open CON with TRUNCATE_EXISTING - * So don't test when disposition is TRUNCATE_EXISTING - */ - if (accesses[i] != TRUNCATE_EXISTING) - { - ok(h != INVALID_HANDLE_VALUE, "Expected to open the CON device on read (%x)\n", accesses[i]); - } - CloseHandle(h); - } h = CreateFileW(conW, GENERIC_READ|GENERIC_WRITE, 0, NULL, accesses[i], 0, NULL); ok(h == INVALID_HANDLE_VALUE, "Expected not to open the CON device on read-write (%x)\n", accesses[i]); ok(GetLastError() == ERROR_FILE_NOT_FOUND, "Unexpected error %x\n", GetLastError());