# HG changeset patch # User Bram Moolenaar # Date 1544276705 -3600 # Node ID 7d2ed364a8a0a1edaf1e02b899cc9cdd3a5e3c26 # Parent 91fafb38608cb81652bba43c4ba8788a4e01afd0 patch 8.1.0572: stopping a job does not work properly on OpenBSD commit https://github.com/vim/vim/commit/76ab4fd61901090e6af3451ca6c5ca0fc370571f Author: Bram Moolenaar Date: Sat Dec 8 14:39:05 2018 +0100 patch 8.1.0572: stopping a job does not work properly on OpenBSD Problem: Stopping a job does not work properly on OpenBSD. Solution: Do not use getpgid() to check the process group of the job processs ID, always pass the negative process ID to kill(). (George Koehler, closes #3656) diff --git a/src/os_unix.c b/src/os_unix.c --- a/src/os_unix.c +++ b/src/os_unix.c @@ -5820,7 +5820,6 @@ mch_detect_ended_job(job_T *job_list) mch_signal_job(job_T *job, char_u *how) { int sig = -1; - pid_t job_pid; if (*how == NUL || STRCMP(how, "term") == 0) sig = SIGTERM; @@ -5841,16 +5840,13 @@ mch_signal_job(job_T *job, char_u *how) else return FAIL; - /* TODO: have an option to only kill the process, not the group? */ - job_pid = job->jv_pid; -#ifdef HAVE_GETPGID - if (job_pid == getpgid(job_pid)) - job_pid = -job_pid; -#endif - - /* Never kill ourselves! */ - if (job_pid != 0) - kill(job_pid, sig); + // Never kill ourselves! + if (job->jv_pid != 0) + { + // TODO: have an option to only kill the process, not the group? + kill(-job->jv_pid, sig); + kill(job->jv_pid, sig); + } return OK; } diff --git a/src/version.c b/src/version.c --- a/src/version.c +++ b/src/version.c @@ -793,6 +793,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 572, +/**/ 571, /**/ 570,