Michael Karcher : server: Don't report LOAD_DLL debug event for exe module.
Alexandre Julliard
julliard at winehq.org
Mon Aug 17 11:24:40 CDT 2009
Module: wine
Branch: master
Commit: a0eb2ed4134bce2bbe3a811789ff19c2627a3e6c
URL: http://source.winehq.org/git/wine.git/?a=commit;h=a0eb2ed4134bce2bbe3a811789ff19c2627a3e6c
Author: Michael Karcher <wine at 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 );
More information about the wine-cvs
mailing list