diff options
Diffstat (limited to 'src/modules/gconf/module-gconf.c')
-rw-r--r-- | src/modules/gconf/module-gconf.c | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/src/modules/gconf/module-gconf.c b/src/modules/gconf/module-gconf.c index 6e8ab6ea..845ede50 100644 --- a/src/modules/gconf/module-gconf.c +++ b/src/modules/gconf/module-gconf.c @@ -378,7 +378,16 @@ void pa__done(pa_module*m) { if (u->pid != (pid_t) -1) { kill(u->pid, SIGTERM); - waitpid(u->pid, NULL, 0); + + for (;;) { + if (waitpid(u->pid, NULL, 0) >= 0) + break; + + if (errno != EINTR) { + pa_log("waitpid() failed: %s", pa_cstrerror(errno)); + break; + } + } } if (u->io_event) @@ -387,7 +396,6 @@ void pa__done(pa_module*m) { if (u->fd >= 0) pa_close(u->fd); - if (u->module_infos) pa_hashmap_free(u->module_infos, module_info_free, u); |