* win32-nat.c (get_child_debug_event): Close file handles created after process
authorChristopher Faylor <me+cygwin@cgf.cx>
Thu, 11 Oct 2001 01:55:58 +0000 (01:55 +0000)
committerChristopher Faylor <me+cygwin@cgf.cx>
Thu, 11 Oct 2001 01:55:58 +0000 (01:55 +0000)
creation and DLL load.
(child_create_inferior): Close unneeded process/thread handle after thread
creation.

gdb/ChangeLog
gdb/win32-nat.c
gdb/windows-nat.c

index 7e52cf5479483baf8d8ecda1c30e1b508ea7889a..cb151d0931c1ff999aedc0994a8bceb040fca0f4 100644 (file)
@@ -1,3 +1,10 @@
+2001-10-10  Christopher Faylor  <cgf@redhat.com>
+
+       * win32-nat.c (get_child_debug_event): Close file handles created after
+       process creation and DLL load.
+       (child_create_inferior): Close unneeded process/thread handle after
+       thread creation.
+
 2001-10-10  Jim Blandy  <jimb@redhat.com>
 
        * mn10300-tdep.c (mn10300_analyze_prologue): Doc fixes.
index 4113f2c69f67880d0e3f4ee718948d1cbd48968c..83749b129454ddc8ba84e64cf6f90205e7f212a8 100644 (file)
@@ -868,6 +868,7 @@ get_child_debug_event (int pid ATTRIBUTE_UNUSED, struct target_waitstatus *ourst
                     (unsigned) current_event.dwProcessId,
                     (unsigned) current_event.dwThreadId,
                     "CREATE_PROCESS_DEBUG_EVENT"));
+      CloseHandle (current_event.u.CreateProcessInfo.hFile);
       current_process_handle = current_event.u.CreateProcessInfo.hProcess;
 
       main_thread_id = current_event.dwThreadId;
@@ -897,6 +898,7 @@ get_child_debug_event (int pid ATTRIBUTE_UNUSED, struct target_waitstatus *ourst
                     (unsigned) current_event.dwProcessId,
                     (unsigned) current_event.dwThreadId,
                     "LOAD_DLL_DEBUG_EVENT"));
+      CloseHandle (current_event.u.LoadDll.hFile);
       catch_errors (handle_load_dll, NULL, (char *) "", RETURN_MASK_ALL);
       registers_changed ();    /* mark all regs invalid */
       ourstatus->kind = TARGET_WAITKIND_LOADED;
@@ -1207,6 +1209,8 @@ child_create_inferior (char *exec_file, char *allargs, char **env)
   if (!ret)
     error ("Error creating process %s, (error %d)\n", exec_file, GetLastError ());
 
+  CloseHandle (pi.hThread);
+  CloseHandle (pi.hProcess);
   do_initial_child_stuff (pi.dwProcessId);
 
   /* child_continue (DBG_CONTINUE, -1); */
index 4113f2c69f67880d0e3f4ee718948d1cbd48968c..83749b129454ddc8ba84e64cf6f90205e7f212a8 100644 (file)
@@ -868,6 +868,7 @@ get_child_debug_event (int pid ATTRIBUTE_UNUSED, struct target_waitstatus *ourst
                     (unsigned) current_event.dwProcessId,
                     (unsigned) current_event.dwThreadId,
                     "CREATE_PROCESS_DEBUG_EVENT"));
+      CloseHandle (current_event.u.CreateProcessInfo.hFile);
       current_process_handle = current_event.u.CreateProcessInfo.hProcess;
 
       main_thread_id = current_event.dwThreadId;
@@ -897,6 +898,7 @@ get_child_debug_event (int pid ATTRIBUTE_UNUSED, struct target_waitstatus *ourst
                     (unsigned) current_event.dwProcessId,
                     (unsigned) current_event.dwThreadId,
                     "LOAD_DLL_DEBUG_EVENT"));
+      CloseHandle (current_event.u.LoadDll.hFile);
       catch_errors (handle_load_dll, NULL, (char *) "", RETURN_MASK_ALL);
       registers_changed ();    /* mark all regs invalid */
       ourstatus->kind = TARGET_WAITKIND_LOADED;
@@ -1207,6 +1209,8 @@ child_create_inferior (char *exec_file, char *allargs, char **env)
   if (!ret)
     error ("Error creating process %s, (error %d)\n", exec_file, GetLastError ());
 
+  CloseHandle (pi.hThread);
+  CloseHandle (pi.hProcess);
   do_initial_child_stuff (pi.dwProcessId);
 
   /* child_continue (DBG_CONTINUE, -1); */