kernel32 console bug?

Robert Reif reif at earthlink.net
Wed Dec 20 01:29:41 CST 2006


I get an error when running a windows console program on wine.  It 
appears that in wine, GetStdHandle(STD_INPUT_HANDLE) doesn't return a 
handle to a console so GetConsoleMode() on that handle fails.  The 
actual programs that fail are at: http://simh.trailing-edge.com/

Here is a simple patch to kernel32/tests/console.c to demonstrate the 
problem:


-------------- next part --------------
diff -p -u -r1.2 console.c
--- dlls/kernel32/tests/console.c	10 Oct 2006 18:19:57 -0000	1.2
+++ dlls/kernel32/tests/console.c	20 Dec 2006 07:20:06 -0000
@@ -552,12 +552,31 @@ static void testCtrlHandler(void)
     ok(GetLastError() == ERROR_INVALID_PARAMETER, "Bad error %u\n", GetLastError());
 }
 
+static void test(void)
+{
+    HANDLE std_input;
+    DWORD saved_mode;
+
+    std_input = GetStdHandle(STD_INPUT_HANDLE);
+    ok(std_input != INVALID_HANDLE_VALUE,
+       "GetStdHandle(STD_INPUT_HANDLE) returned INVALID_HANDLE_VALUE\n");
+
+    if (std_input != INVALID_HANDLE_VALUE)
+    {
+        BOOL status;
+        status = GetConsoleMode(std_input, &saved_mode);
+        ok(status != FALSE, "GetConsoleMode() failed: %08x\n", GetLastError());
+    }
+}
+
 START_TEST(console)
 {
     HANDLE hConIn, hConOut;
     BOOL ret;
     CONSOLE_SCREEN_BUFFER_INFO	sbi;
 
+    test();
+
     /* be sure we have a clean console (and that's our own)
      * FIXME: this will make the test fail (currently) if we don't run
      * under X11


More information about the wine-devel mailing list