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