From: Bram Moolenaar Date: Mon, 10 Feb 2020 20:32:19 +0000 (+0100) Subject: patch 8.2.0238: MS-Windows: job_stop() results in exit value zero X-Git-Tag: v8.2.0238 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=b3e195cca7b3201b188c1713b64012b1bef4f61f;p=vim patch 8.2.0238: MS-Windows: job_stop() results in exit value zero Problem: MS-Windows: job_stop() results in exit value zero. Solution: Call TerminateJobObject() with -1 instead of 0. (Yasuhiro Matsumoto, closes #5150, closes #5614) --- diff --git a/src/os_win32.c b/src/os_win32.c index 7dc37a111..2594aeea5 100644 --- a/src/os_win32.c +++ b/src/os_win32.c @@ -5384,9 +5384,9 @@ mch_signal_job(job_T *job, char_u *how) { if (job->jv_channel != NULL && job->jv_channel->ch_anonymous_pipe) job->jv_channel->ch_killing = TRUE; - return TerminateJobObject(job->jv_job_object, 0) ? OK : FAIL; + return TerminateJobObject(job->jv_job_object, -1) ? OK : FAIL; } - return terminate_all(job->jv_proc_info.hProcess, 0) ? OK : FAIL; + return terminate_all(job->jv_proc_info.hProcess, -1) ? OK : FAIL; } if (!AttachConsole(job->jv_proc_info.dwProcessId)) diff --git a/src/testdir/test_channel.vim b/src/testdir/test_channel.vim index c2068105b..ebcd76e0f 100644 --- a/src/testdir/test_channel.vim +++ b/src/testdir/test_channel.vim @@ -1991,3 +1991,18 @@ func Test_job_start_fails() " this was leaking memory call assert_fails("call job_start([''])", "E474:") endfunc + +func Test_issue_5150() + let g:job = job_start('grep foo', {}) + call job_stop(g:job) + sleep 10m + call assert_equal(-1, job_info(g:job).exitval) + let g:job = job_start('grep foo', {}) + call job_stop(g:job, 'term') + sleep 10m + call assert_equal(-1, job_info(g:job).exitval) + let g:job = job_start('grep foo', {}) + call job_stop(g:job, 'kill') + sleep 10m + call assert_equal(-1, job_info(g:job).exitval) +endfunc diff --git a/src/version.c b/src/version.c index 7c48e0bdc..61a9f958a 100644 --- a/src/version.c +++ b/src/version.c @@ -742,6 +742,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 238, /**/ 237, /**/