# HG changeset patch # User Bram Moolenaar # Date 1576963803 -3600 # Node ID ab97d1aea4aaac933ee1afc41730537dda116c4a # Parent ddd9455af2d330cd0ad35ad1175acf3ef8fc71c8 patch 8.2.0029: MS-Windows: crash with empty job command Commit: https://github.com/vim/vim/commit/a27655ef6d0001c7c2265ea682455ec82acee826 Author: Bram Moolenaar 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) diff --git a/src/channel.c b/src/channel.c --- 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 } diff --git a/src/testdir/test_channel.vim b/src/testdir/test_channel.vim --- 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') diff --git a/src/version.c b/src/version.c --- 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 */ /**/ + 29, +/**/ 28, /**/ 27,