diff options
Diffstat (limited to 'winsup/cygwin/sigproc.cc')
-rw-r--r-- | winsup/cygwin/sigproc.cc | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/winsup/cygwin/sigproc.cc b/winsup/cygwin/sigproc.cc index a3035d9ca..be570c496 100644 --- a/winsup/cygwin/sigproc.cc +++ b/winsup/cygwin/sigproc.cc @@ -866,10 +866,13 @@ child_info_spawn::reattach_children () false, DUPLICATE_SAME_ACCESS)) debug_printf ("couldn't duplicate parent %p handles for forked children after exec, %E", children[i].rd_proc_pipe); - else if ((p.hProcess = OpenProcess (PROCESS_QUERY_INFORMATION, false, p->pid))) - p.reattach (); - else + else if (!(p.hProcess = OpenProcess (PROCESS_QUERY_INFORMATION, false, p->pid))) CloseHandle (p.rd_proc_pipe); + else if (!p.reattach ()) + { + CloseHandle (p.hProcess); + CloseHandle (p.rd_proc_pipe); + } } } |