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); }