diff options
-rw-r--r-- | common/exechelp-posix.c | 8 | ||||
-rw-r--r-- | common/exechelp-w32.c | 8 |
2 files changed, 14 insertions, 2 deletions
diff --git a/common/exechelp-posix.c b/common/exechelp-posix.c index 0c09abbf4..7a4f9e251 100644 --- a/common/exechelp-posix.c +++ b/common/exechelp-posix.c @@ -1529,8 +1529,14 @@ gnupg_process_wait (gnupg_process_t process, int hang) void gnupg_process_release (gnupg_process_t process) { + if (!process) + return; + if (process->terminated) - gnupg_process_wait (process, 0); + { + gnupg_process_terminate (process); + gnupg_process_wait (process, 1); + } xfree (process); } diff --git a/common/exechelp-w32.c b/common/exechelp-w32.c index d505379cc..9ca2bab2d 100644 --- a/common/exechelp-w32.c +++ b/common/exechelp-w32.c @@ -1730,8 +1730,14 @@ gnupg_process_terminate (gnupg_process_t process) void gnupg_process_release (gnupg_process_t process) { + if (!process) + return; + if (process->terminated) - gnupg_process_wait (process, 0); + { + gnupg_process_terminate (process); + gnupg_process_wait (process, 1); + } xfree (process); } |