diff options
| -rw-r--r-- | src/ChangeLog | 5 | ||||
| -rw-r--r-- | src/w32proc.c | 6 |
2 files changed, 11 insertions, 0 deletions
diff --git a/src/ChangeLog b/src/ChangeLog index 4325d35adee..99b5e8734e9 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,8 @@ +2013-02-18 Eli Zaretskii <eliz@gnu.org> + + * w32proc.c (new_child): Avoid leaking handles if the subprocess + resources were not orderly released. + 2013-02-17 Eli Zaretskii <eliz@gnu.org> * w32proc.c (new_child): Remove the loop that attempted to salvage diff --git a/src/w32proc.c b/src/w32proc.c index 3b4522bf16b..da4549bd7df 100644 --- a/src/w32proc.c +++ b/src/w32proc.c @@ -802,6 +802,12 @@ new_child (void) cp = &child_procs[child_proc_count++]; Initialize: + /* Last opportunity to avoid leaking handles before we forget them + for good. */ + if (cp->procinfo.hProcess) + CloseHandle (cp->procinfo.hProcess); + if (cp->procinfo.hThread) + CloseHandle (cp->procinfo.hThread); memset (cp, 0, sizeof (*cp)); cp->fd = -1; cp->pid = -1; |
