* win32-low.c (get_child_debug_event): On EXIT_THREAD_DEBUG_EVENT
authorPedro Alves <palves@redhat.com>
Thu, 26 Nov 2009 22:18:40 +0000 (22:18 +0000)
committerPedro Alves <palves@redhat.com>
Thu, 26 Nov 2009 22:18:40 +0000 (22:18 +0000)
events, don't leave current_inferior pointing at null.

gdb/gdbserver/ChangeLog
gdb/gdbserver/win32-low.c

index 64619ee2a53b5df16b9923c384a3293b753a064e..81707a7c3977091102916b5a4912dad47c49b9fa 100644 (file)
@@ -1,3 +1,8 @@
+2009-11-26  Pedro Alves  <pedro@codesourcery.com>
+
+       * win32-low.c (get_child_debug_event): On EXIT_THREAD_DEBUG_EVENT
+       events, don't leave current_inferior pointing at null.
+
 2009-11-26  Pedro Alves  <pedro@codesourcery.com>
 
        * win32-low.c (LOG): Delete.
index 3b9ae591329dc157d8189b24b2dfdd581cb25e67..57633f14965111caf5c0733fe7bf24e050c7570c 100644 (file)
@@ -1438,10 +1438,6 @@ get_child_debug_event (struct target_waitstatus *ourstatus)
 
  gotevent:
 
-  ptid = debug_event_ptid (&current_event);
-  current_inferior =
-    (struct thread_info *) find_inferior_id (&all_threads, ptid);
-
   switch (current_event.dwDebugEventCode)
     {
     case CREATE_THREAD_DEBUG_EVENT:
@@ -1463,7 +1459,9 @@ get_child_debug_event (struct target_waitstatus *ourstatus)
                (unsigned) current_event.dwThreadId));
       child_delete_thread (current_event.dwProcessId,
                           current_event.dwThreadId);
-      break;
+
+      current_inferior = (struct thread_info *) all_threads.head;
+      return 1;
 
     case CREATE_PROCESS_DEBUG_EVENT:
       OUTMSG2 (("gdbserver: kernel event CREATE_PROCESS_DEBUG_EVENT "
@@ -1558,6 +1556,7 @@ get_child_debug_event (struct target_waitstatus *ourstatus)
       break;
     }
 
+  ptid = debug_event_ptid (&current_event);
   current_inferior =
     (struct thread_info *) find_inferior_id (&all_threads, ptid);
   return 1;