Mercurial > vim
changeset 18937:ab97d1aea4aa v8.2.0029
patch 8.2.0029: MS-Windows: crash with empty job command
Commit: https://github.com/vim/vim/commit/a27655ef6d0001c7c2265ea682455ec82acee826
Author: Bram Moolenaar <Bram@vim.org>
Date: Sat Dec 21 22:22:01 2019 +0100
patch 8.2.0029: MS-Windows: crash with empty job command
Problem: MS-Windows: crash with empty job command.
Solution: Check for NULL result. (Yasuhiro Matsumoto, closes https://github.com/vim/vim/issues/5390)
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Sat, 21 Dec 2019 22:30:03 +0100 |
parents | ddd9455af2d3 |
children | a32de2d96944 |
files | src/channel.c src/testdir/test_channel.vim src/version.c |
diffstat | 3 files changed, 13 insertions(+), 7 deletions(-) [+] |
line wrap: on
line diff
--- a/src/channel.c +++ b/src/channel.c @@ -5947,6 +5947,11 @@ job_start( if (win32_build_cmd(l, &ga) == FAIL) goto theend; cmd = ga.ga_data; + if (cmd == NULL) + { + emsg(_(e_invarg)); + goto theend; + } #endif }
--- a/src/testdir/test_channel.vim +++ b/src/testdir/test_channel.vim @@ -1331,14 +1331,12 @@ func Ch_close_handle(port) endfunc func Test_close_handle() - call ch_log('Test_close_handle()') call s:run_server('Ch_close_handle') endfunc """""""""" func Test_open_fail() - call ch_log('Test_open_fail()') silent! let ch = ch_open("noserver") echo ch let d = ch @@ -1360,7 +1358,6 @@ func Ch_open_delay(port) endfunc func Test_open_delay() - call ch_log('Test_open_delay()') " The server will wait half a second before creating the port. call s:run_server('Ch_open_delay', 'delay') endfunc @@ -1384,7 +1381,6 @@ function Ch_test_call(port) endfunc func Test_call() - call ch_log('Test_call()') call s:run_server('Ch_test_call') endfunc @@ -1473,7 +1469,6 @@ function Ch_test_close_callback(port) endfunc func Test_close_callback() - call ch_log('Test_close_callback()') call s:run_server('Ch_test_close_callback') endfunc @@ -1495,7 +1490,6 @@ function Ch_test_close_partial(port) endfunc func Test_close_partial() - call ch_log('Test_close_partial()') call s:run_server('Ch_test_close_partial') endfunc @@ -1712,7 +1706,6 @@ function Ch_test_close_lambda(port) endfunc func Test_close_lambda() - call ch_log('Test_close_lambda()') call s:run_server('Ch_test_close_lambda') endfunc @@ -1965,6 +1958,12 @@ func Test_zz_nl_err_to_out_pipe() endtry endfunc +func Test_empty_job() + " This was crashing on MS-Windows. + let job = job_start([""]) + call WaitForAssert({-> assert_equal("dead", job_status(job))}) +endfunc + " Do this last, it stops any channel log. func Test_zz_ch_log() call ch_logfile('Xlog', 'w')