Rémi Bernon : server: Accept DBG_EXCEPTION_HANDLED parameter in continue_debug_event.

Alexandre Julliard julliard at winehq.org
Wed Jan 6 15:43:49 CST 2021


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

Author: Rémi Bernon <rbernon at codeweavers.com>
Date:   Wed Jan  6 15:33:10 2021 +0100

server: Accept DBG_EXCEPTION_HANDLED parameter in continue_debug_event.

Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=50453
Signed-off-by: Rémi Bernon <rbernon at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/ntdll/tests/exception.c | 27 ++++++++++++++-------------
 server/debugger.c            |  1 +
 2 files changed, 15 insertions(+), 13 deletions(-)

diff --git a/dlls/ntdll/tests/exception.c b/dlls/ntdll/tests/exception.c
index ca338775351..202a939b76f 100644
--- a/dlls/ntdll/tests/exception.c
+++ b/dlls/ntdll/tests/exception.c
@@ -1053,7 +1053,7 @@ static void test_exceptions(void)
     ok( res == STATUS_SUCCESS, "NtSetContextThread failed with %x\n", res );
 }
 
-static void test_debugger(void)
+static void test_debugger(DWORD cont_status)
 {
     char cmdline[MAX_PATH];
     PROCESS_INFORMATION pi;
@@ -1081,7 +1081,7 @@ static void test_debugger(void)
 
     do
     {
-        continuestatus = DBG_CONTINUE;
+        continuestatus = cont_status;
         ok(WaitForDebugEvent(&de, INFINITE), "reading debug event\n");
 
         ret = ContinueDebugEvent(de.dwProcessId, de.dwThreadId, 0xdeadbeef);
@@ -1091,7 +1091,7 @@ static void test_debugger(void)
         if (de.dwThreadId != pi.dwThreadId)
         {
             trace("event %d not coming from main thread, ignoring\n", de.dwDebugEventCode);
-            ContinueDebugEvent(de.dwProcessId, de.dwThreadId, DBG_CONTINUE);
+            ContinueDebugEvent(de.dwProcessId, de.dwThreadId, cont_status);
             continue;
         }
 
@@ -3288,7 +3288,7 @@ static void test_rtlraiseexception(void)
     run_rtlraiseexception_test(EXCEPTION_INVALID_HANDLE);
 }
 
-static void test_debugger(void)
+static void test_debugger(DWORD cont_status)
 {
     char cmdline[MAX_PATH];
     PROCESS_INFORMATION pi;
@@ -3316,7 +3316,7 @@ static void test_debugger(void)
 
     do
     {
-        continuestatus = DBG_CONTINUE;
+        continuestatus = cont_status;
         ok(WaitForDebugEvent(&de, INFINITE), "reading debug event\n");
 
         ret = ContinueDebugEvent(de.dwProcessId, de.dwThreadId, 0xdeadbeef);
@@ -3326,7 +3326,7 @@ static void test_debugger(void)
         if (de.dwThreadId != pi.dwThreadId)
         {
             trace("event %d not coming from main thread, ignoring\n", de.dwDebugEventCode);
-            ContinueDebugEvent(de.dwProcessId, de.dwThreadId, DBG_CONTINUE);
+            ContinueDebugEvent(de.dwProcessId, de.dwThreadId, cont_status);
             continue;
         }
 
@@ -4252,7 +4252,7 @@ static void test_thread_context(void)
 #undef COMPARE
 }
 
-static void test_debugger(void)
+static void test_debugger(DWORD cont_status)
 {
     char cmdline[MAX_PATH];
     PROCESS_INFORMATION pi;
@@ -4280,7 +4280,7 @@ static void test_debugger(void)
 
     do
     {
-        continuestatus = DBG_CONTINUE;
+        continuestatus = cont_status;
         ok(WaitForDebugEvent(&de, INFINITE), "reading debug event\n");
 
         ret = ContinueDebugEvent(de.dwProcessId, de.dwThreadId, 0xdeadbeef);
@@ -4290,7 +4290,7 @@ static void test_debugger(void)
         if (de.dwThreadId != pi.dwThreadId)
         {
             trace("event %d not coming from main thread, ignoring\n", de.dwDebugEventCode);
-            ContinueDebugEvent(de.dwProcessId, de.dwThreadId, DBG_CONTINUE);
+            ContinueDebugEvent(de.dwProcessId, de.dwThreadId, cont_status);
             continue;
         }
 
@@ -5500,7 +5500,7 @@ static void test_thread_context(void)
 #undef COMPARE
 }
 
-static void test_debugger(void)
+static void test_debugger(DWORD cont_status)
 {
     char cmdline[MAX_PATH];
     PROCESS_INFORMATION pi;
@@ -5528,7 +5528,7 @@ static void test_debugger(void)
 
     do
     {
-        continuestatus = DBG_CONTINUE;
+        continuestatus = cont_status;
         ok(WaitForDebugEvent(&de, INFINITE), "reading debug event\n");
 
         ret = ContinueDebugEvent(de.dwProcessId, de.dwThreadId, 0xdeadbeef);
@@ -5538,7 +5538,7 @@ static void test_debugger(void)
         if (de.dwThreadId != pi.dwThreadId)
         {
             trace("event %d not coming from main thread, ignoring\n", de.dwDebugEventCode);
-            ContinueDebugEvent(de.dwProcessId, de.dwThreadId, DBG_CONTINUE);
+            ContinueDebugEvent(de.dwProcessId, de.dwThreadId, cont_status);
             continue;
         }
 
@@ -8346,7 +8346,8 @@ START_TEST(exception)
 
 #endif
 
-    test_debugger();
+    test_debugger(DBG_EXCEPTION_HANDLED);
+    test_debugger(DBG_CONTINUE);
     test_thread_context();
     test_outputdebugstring(1, FALSE);
     test_ripevent(1);
diff --git a/server/debugger.c b/server/debugger.c
index e4a6c1e43a8..ee95d4ee326 100644
--- a/server/debugger.c
+++ b/server/debugger.c
@@ -677,6 +677,7 @@ DECL_HANDLER(continue_debug_event)
     struct process *process;
 
     if (req->status != DBG_EXCEPTION_NOT_HANDLED &&
+        req->status != DBG_EXCEPTION_HANDLED &&
         req->status != DBG_CONTINUE &&
         req->status != DBG_REPLY_LATER)
     {




More information about the wine-cvs mailing list