Free the handles of the event structure in the right process (thanks
to Jeremy White).

diff --git a/server/debugger.c b/server/debugger.c
index ef8e99d..6ebdea6 100644
--- a/server/debugger.c
+++ b/server/debugger.c
@@ -100,22 +100,22 @@
 }
 
 /* free a debug event structure */
-static void free_event( struct debug_event *event )
+static void free_event( struct thread *debugger, struct debug_event *event )
 {
     switch(event->code)
     {
     case CREATE_THREAD_DEBUG_EVENT:
-        close_handle( event->thread->process, event->data.create_thread.handle );
+        close_handle( debugger->process, event->data.create_thread.handle );
         break;
     case CREATE_PROCESS_DEBUG_EVENT:
         if (event->data.create_process.file != -1)
-            close_handle( event->thread->process, event->data.create_process.file );
-        close_handle( event->thread->process, event->data.create_process.thread );
-        close_handle( event->thread->process, event->data.create_process.process );
+            close_handle( debugger->process, event->data.create_process.file );
+        close_handle( debugger->process, event->data.create_process.thread );
+        close_handle( debugger->process, event->data.create_process.process );
         break;
     case LOAD_DLL_DEBUG_EVENT:
         if (event->data.load_dll.handle != -1)
-            close_handle( event->thread->process, event->data.load_dll.handle );
+            close_handle( debugger->process, event->data.load_dll.handle );
         break;
     }
     event->thread->debug_event = NULL;
@@ -238,7 +238,7 @@
         req->status = status;
         send_reply( thread );
     }
-    free_event( event );
+    free_event( current, event );
     resume_process( process );
     return 1;
 }
@@ -274,7 +274,7 @@
         /* only exit events can replace others */
         assert( code == EXIT_THREAD_DEBUG_EVENT || code == EXIT_PROCESS_DEBUG_EVENT );
         if (!thread->debug_event->sent) unlink_event( debug_ctx, thread->debug_event );
-        free_event( thread->debug_event );
+        free_event( debugger, thread->debug_event );
     }
 
     link_event( debug_ctx, event );
@@ -368,7 +368,7 @@
         while ((event = debug_ctx->event_head) != NULL)
         {
             unlink_event( debug_ctx, event );
-            free_event( event );
+            free_event( thread, event );
         }
         /* remove the timeout */
         if (debug_ctx->timeout) remove_timeout_user( debug_ctx->timeout );