Alexandre Julliard : server: Grab the current pointer to avoid referencing it after it could become invalid .

Alexandre Julliard julliard at winehq.org
Mon May 23 13:25:00 CDT 2011


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

Author: Alexandre Julliard <julliard at winehq.org>
Date:   Mon May 23 19:51:00 2011 +0200

server: Grab the current pointer to avoid referencing it after it could become invalid.

---

 server/debugger.c |    9 +++++----
 1 files changed, 5 insertions(+), 4 deletions(-)

diff --git a/server/debugger.c b/server/debugger.c
index d8a390e..35cb3e3 100644
--- a/server/debugger.c
+++ b/server/debugger.c
@@ -632,6 +632,7 @@ DECL_HANDLER(queue_exception_event)
     {
         debug_event_t data;
         struct debug_event *event;
+        struct thread *thread = current;
 
         if ((req->len % sizeof(client_ptr_t)) != 0 ||
             req->len > get_req_data_size() ||
@@ -649,19 +650,19 @@ DECL_HANDLER(queue_exception_event)
         data.exception.nb_params = req->len / sizeof(client_ptr_t);
         memcpy( data.exception.params, get_req_data(), req->len );
 
-        if ((event = alloc_debug_event( current, EXCEPTION_DEBUG_EVENT, &data )))
+        if ((event = alloc_debug_event( thread, EXCEPTION_DEBUG_EVENT, &data )))
         {
             const context_t *context = (const context_t *)((const char *)get_req_data() + req->len);
             data_size_t size = get_req_data_size() - req->len;
 
             memset( &event->context, 0, sizeof(event->context) );
             memcpy( &event->context, context, min( sizeof(event->context), size ) );
-            current->context = &event->context;
+            thread->context = &event->context;
 
-            if ((reply->handle = alloc_handle( current->process, event, SYNCHRONIZE, 0 )))
+            if ((reply->handle = alloc_handle( thread->process, event, SYNCHRONIZE, 0 )))
             {
                 link_event( event );
-                suspend_process( current->process );
+                suspend_process( thread->process );
             }
             release_object( event );
         }




More information about the wine-cvs mailing list