aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--common/exechelp-posix.c8
-rw-r--r--common/exechelp-w32.c8
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);
}