Do not free the handles once they have been sent to the client (thanks
to Jeremy White).
This commit is contained in:
parent
cd168e779d
commit
c61eb035e3
@ -102,21 +102,26 @@ static int fill_debug_event( struct thread *debugger, struct thread *thread,
|
|||||||
/* free a debug event structure */
|
/* free a debug event structure */
|
||||||
static void free_event( struct thread *debugger, struct debug_event *event )
|
static void free_event( struct thread *debugger, struct debug_event *event )
|
||||||
{
|
{
|
||||||
switch(event->code)
|
/* If the event has been sent already, the handles are now under the */
|
||||||
|
/* responsibility of the debugger process, so we don't touch them */
|
||||||
|
if (!event->sent)
|
||||||
{
|
{
|
||||||
case CREATE_THREAD_DEBUG_EVENT:
|
switch(event->code)
|
||||||
close_handle( debugger->process, event->data.create_thread.handle );
|
{
|
||||||
break;
|
case CREATE_THREAD_DEBUG_EVENT:
|
||||||
case CREATE_PROCESS_DEBUG_EVENT:
|
close_handle( debugger->process, event->data.create_thread.handle );
|
||||||
if (event->data.create_process.file != -1)
|
break;
|
||||||
close_handle( debugger->process, event->data.create_process.file );
|
case CREATE_PROCESS_DEBUG_EVENT:
|
||||||
close_handle( debugger->process, event->data.create_process.thread );
|
if (event->data.create_process.file != -1)
|
||||||
close_handle( debugger->process, event->data.create_process.process );
|
close_handle( debugger->process, event->data.create_process.file );
|
||||||
break;
|
close_handle( debugger->process, event->data.create_process.thread );
|
||||||
case LOAD_DLL_DEBUG_EVENT:
|
close_handle( debugger->process, event->data.create_process.process );
|
||||||
if (event->data.load_dll.handle != -1)
|
break;
|
||||||
close_handle( debugger->process, event->data.load_dll.handle );
|
case LOAD_DLL_DEBUG_EVENT:
|
||||||
break;
|
if (event->data.load_dll.handle != -1)
|
||||||
|
close_handle( debugger->process, event->data.load_dll.handle );
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
event->thread->debug_event = NULL;
|
event->thread->debug_event = NULL;
|
||||||
release_object( event->thread );
|
release_object( event->thread );
|
||||||
|
Loading…
x
Reference in New Issue
Block a user