Module: wine Branch: master Commit: a0eb2ed4134bce2bbe3a811789ff19c2627a3e6c URL: http://source.winehq.org/git/wine.git/?a=commit;h=a0eb2ed4134bce2bbe3a811789...
Author: Michael Karcher wine@mkarcher.dialup.fu-berlin.de Date: Mon Aug 17 09:19:53 2009 +0200
server: Don't report LOAD_DLL debug event for exe module.
---
dlls/kernel32/tests/process.c | 9 +++++++++ server/debugger.c | 2 +- 2 files changed, 10 insertions(+), 1 deletions(-)
diff --git a/dlls/kernel32/tests/process.c b/dlls/kernel32/tests/process.c index d8087a6..21f3c52 100644 --- a/dlls/kernel32/tests/process.c +++ b/dlls/kernel32/tests/process.c @@ -1241,6 +1241,7 @@ static void test_SuspendFlag(void) static void test_DebuggingFlag(void) { char buffer[MAX_PATH]; + void *processbase = NULL; PROCESS_INFORMATION info; STARTUPINFOA startup, us; DEBUG_EVENT de; @@ -1261,7 +1262,15 @@ static void test_DebuggingFlag(void) { ok(WaitForDebugEvent(&de, INFINITE), "reading debug event\n"); ContinueDebugEvent(de.dwProcessId, de.dwThreadId, DBG_CONTINUE); + if (!dbg) + { + ok(de.dwDebugEventCode == CREATE_PROCESS_DEBUG_EVENT, + "first event: %d\n", de.dwDebugEventCode); + processbase = de.u.CreateProcessInfo.lpBaseOfImage; + } if (de.dwDebugEventCode != EXCEPTION_DEBUG_EVENT) dbg++; + ok(de.dwDebugEventCode != LOAD_DLL_DEBUG_EVENT || + de.u.LoadDll.lpBaseOfDll != processbase, "got LOAD_DLL for main module\n"); } while (de.dwDebugEventCode != EXIT_PROCESS_DEBUG_EVENT);
ok(dbg, "I have seen a debug event\n"); diff --git a/server/debugger.c b/server/debugger.c index c01ab45..faade98 100644 --- a/server/debugger.c +++ b/server/debugger.c @@ -514,7 +514,7 @@ void generate_startup_debug_events( struct process *process, client_ptr_t entry
/* generate dll events (in loading order, i.e. reverse list order) */ ptr = list_tail( &process->dlls ); - while (ptr) + while (ptr != list_head( &process->dlls )) { struct process_dll *dll = LIST_ENTRY( ptr, struct process_dll, entry ); generate_debug_event( first_thread, LOAD_DLL_DEBUG_EVENT, dll );