diff options
author | Bram Moolenaar <Bram@vim.org> | 2020-02-10 21:32:19 +0100 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2020-02-10 21:32:19 +0100 |
commit | b3e195cca7b3201b188c1713b64012b1bef4f61f (patch) | |
tree | 807cac065c03984fe15891e8f7a93fb0a19803b8 /src | |
parent | 7ba3b91e0385c848c773e2f2d803db01730e7786 (diff) |
patch 8.2.0238: MS-Windows: job_stop() results in exit value zerov8.2.0238
Problem: MS-Windows: job_stop() results in exit value zero.
Solution: Call TerminateJobObject() with -1 instead of 0. (Yasuhiro
Matsumoto, closes #5150, closes #5614)
Diffstat (limited to 'src')
-rw-r--r-- | src/os_win32.c | 4 | ||||
-rw-r--r-- | src/testdir/test_channel.vim | 15 | ||||
-rw-r--r-- | src/version.c | 2 |
3 files changed, 19 insertions, 2 deletions
diff --git a/src/os_win32.c b/src/os_win32.c index 7dc37a1114..2594aeea56 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 c2068105bf..ebcd76e0ff 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 7c48e0bdc8..61a9f958a4 100644 --- a/src/version.c +++ b/src/version.c @@ -743,6 +743,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 238, +/**/ 237, /**/ 236, |