From a27655ef6d0001c7c2265ea682455ec82acee826 Mon Sep 17 00:00:00 2001 From: Bram Moolenaar Date: Sat, 21 Dec 2019 22:22:01 +0100 Subject: 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 #5390) --- src/channel.c | 5 +++++ src/testdir/test_channel.vim | 13 ++++++------- src/version.c | 2 ++ 3 files changed, 13 insertions(+), 7 deletions(-) diff --git a/src/channel.c b/src/channel.c index 7edca1a19..aed234c3a 100644 --- 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 index 17cdb7cac..24a7ae454 100644 --- 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 index ec5c7b49c..7d9b3db90 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 */ +/**/ + 29, /**/ 28, /**/ -- cgit v1.2.1