Alexandre Julliard : server: Fix sharing parameters for debug event files, and don't fail if the file can't be opened.

Alexandre Julliard julliard at winehq.org
Tue Apr 19 12:08:17 CDT 2011


Module: wine
Branch: master
Commit: 1b868f4967f2dadd1d12b2b0fc5a14f9c5766ab4
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=1b868f4967f2dadd1d12b2b0fc5a14f9c5766ab4

Author: Alexandre Julliard <julliard at winehq.org>
Date:   Tue Apr 19 10:29:44 2011 +0200

server: Fix sharing parameters for debug event files, and don't fail if the file can't be opened.

---

 server/debugger.c |   26 ++++++++++----------------
 1 files changed, 10 insertions(+), 16 deletions(-)

diff --git a/server/debugger.c b/server/debugger.c
index c693c7d..2ee6f6d 100644
--- a/server/debugger.c
+++ b/server/debugger.c
@@ -155,18 +155,8 @@ static int fill_create_process_event( struct debug_event *event, const void *arg
         close_handle( debugger, event->data.create_process.process );
         return 0;
     }
-    event->data.create_process.thread = handle;
-
-    handle = 0;
-    if (exe_module->mapping &&
-        /* the doc says write access too, but this doesn't seem a good idea */
-        !(handle = open_mapping_file( debugger, exe_module->mapping, GENERIC_READ, 0 )))
-    {
-        close_handle( debugger, event->data.create_process.process );
-        close_handle( debugger, event->data.create_process.thread );
-        return 0;
-    }
-    event->data.create_process.file       = handle;
+    event->data.create_process.thread     = handle;
+    event->data.create_process.file       = 0;
     event->data.create_process.teb        = thread->teb;
     event->data.create_process.base       = exe_module->base;
     event->data.create_process.start      = *entry;
@@ -174,6 +164,10 @@ static int fill_create_process_event( struct debug_event *event, const void *arg
     event->data.create_process.dbg_size   = exe_module->dbg_size;
     event->data.create_process.name       = exe_module->name;
     event->data.create_process.unicode    = 1;
+
+    if (exe_module->mapping)  /* the doc says write access too, but this doesn't seem a good idea */
+        event->data.create_process.file = open_mapping_file( debugger, exe_module->mapping, GENERIC_READ,
+                                                             FILE_SHARE_READ | FILE_SHARE_WRITE );
     return 1;
 }
 
@@ -195,16 +189,16 @@ static int fill_load_dll_event( struct debug_event *event, const void *arg )
 {
     struct process *debugger = event->debugger->process;
     const struct process_dll *dll = arg;
-    obj_handle_t handle = 0;
 
-    if (dll->mapping && !(handle = open_mapping_file( debugger, dll->mapping, GENERIC_READ, 0 )))
-        return 0;
-    event->data.load_dll.handle     = handle;
+    event->data.load_dll.handle     = 0;
     event->data.load_dll.base       = dll->base;
     event->data.load_dll.dbg_offset = dll->dbg_offset;
     event->data.load_dll.dbg_size   = dll->dbg_size;
     event->data.load_dll.name       = dll->name;
     event->data.load_dll.unicode    = 1;
+    if (dll->mapping)
+        event->data.load_dll.handle = open_mapping_file( debugger, dll->mapping, GENERIC_READ,
+                                                         FILE_SHARE_READ | FILE_SHARE_WRITE );
     return 1;
 }
 




More information about the wine-cvs mailing list