Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=50453 Signed-off-by: Rémi Bernon rbernon@codeweavers.com --- 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) {