Module: wine Branch: master Commit: be23f5a7a6f8a657cc4ee2927e1b138118a858e5 URL: http://source.winehq.org/git/wine.git/?a=commit;h=be23f5a7a6f8a657cc4ee2927e...
Author: Alexandre Julliard julliard@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 ); }