diff options
author | Eli Zaretskii <eliz@gnu.org> | 2013-02-18 18:38:50 +0200 |
---|---|---|
committer | Eli Zaretskii <eliz@gnu.org> | 2013-02-18 18:38:50 +0200 |
commit | 17ddfd150ff1d84021342ee82ff53b5860579252 (patch) | |
tree | df45d278191f113d9e8cea464d91778ab7ba7b2b | |
parent | c1b9b2c27fafbb7e20ba5628771e8f75c3bfd32b (diff) | |
download | emacs-17ddfd150ff1d84021342ee82ff53b5860579252.tar.gz |
Avoid leaking handles on MS-Windows.
src/w32proc.c (new_child): Avoid leaking handles if the subprocess
resources were not orderly released.
-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; |