Jacek Caban : server: Fix handling of STATUS_ALERTED in get_next_console_request.

Alexandre Julliard julliard at winehq.org
Wed Dec 2 15:21:07 CST 2020


Module: wine
Branch: master
Commit: 574ced0dc6f019d11c7c0c67d4b655985b1c24e7
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=574ced0dc6f019d11c7c0c67d4b655985b1c24e7

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Wed Dec  2 20:06:11 2020 +0100

server: Fix handling of STATUS_ALERTED in get_next_console_request.

Signed-off-by: Jacek Caban <jacek at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/kernel32/tests/console.c | 14 ++++++++++++++
 server/console.c              |  2 +-
 2 files changed, 15 insertions(+), 1 deletion(-)

diff --git a/dlls/kernel32/tests/console.c b/dlls/kernel32/tests/console.c
index cab036243dc..918ecac8ac4 100644
--- a/dlls/kernel32/tests/console.c
+++ b/dlls/kernel32/tests/console.c
@@ -268,6 +268,8 @@ static void testWriteSimple(HANDLE hCon)
     const char*	mytest = "abcdefg";
     int mylen = strlen(mytest);
     COORD c = {0, 0};
+    DWORD len;
+    BOOL ret;
 
     simple_write_console(hCon, mytest);
 
@@ -278,6 +280,18 @@ static void testWriteSimple(HANDLE hCon)
 
     okCURSOR(hCon, c);
     okCHAR(hCon, c, ' ', DEFAULT_ATTRIB);
+
+    ret = WriteFile(hCon, mytest, mylen, &len, NULL);
+    ok(ret, "WriteFile failed: %u\n", GetLastError());
+    ok(len == mylen, "unexpected len = %u\n", len);
+
+    for (c.X = 0; c.X < 2 * mylen; c.X++)
+    {
+        okCHAR(hCon, c, mytest[c.X % mylen], TEST_ATTRIB);
+    }
+
+    okCURSOR(hCon, c);
+    okCHAR(hCon, c, ' ', DEFAULT_ATTRIB);
 }
 
 static void testWriteNotWrappedNotProcessed(HANDLE hCon, COORD sbSize)
diff --git a/server/console.c b/server/console.c
index dc3785e8726..d1f948b23a6 100644
--- a/server/console.c
+++ b/server/console.c
@@ -1520,7 +1520,6 @@ DECL_HANDLER(get_next_console_request)
                     if ((iosb->out_data = memdup( get_req_data(), iosb->out_size )))
                     {
                         iosb->result = iosb->out_size;
-                        status = STATUS_ALERTED;
                     }
                     else if (!status)
                     {
@@ -1528,6 +1527,7 @@ DECL_HANDLER(get_next_console_request)
                         iosb->out_size = 0;
                     }
                 }
+                if (iosb->result) status = STATUS_ALERTED;
             }
             else
             {




More information about the wine-cvs mailing list