]> granicus.if.org Git - vim/commitdiff
patch 8.2.0029: MS-Windows: crash with empty job command v8.2.0029
authorBram Moolenaar <Bram@vim.org>
Sat, 21 Dec 2019 21:22:01 +0000 (22:22 +0100)
committerBram Moolenaar <Bram@vim.org>
Sat, 21 Dec 2019 21:22:01 +0000 (22:22 +0100)
Problem:    MS-Windows: crash with empty job command.
Solution:   Check for NULL result. (Yasuhiro Matsumoto, closes #5390)

src/channel.c
src/testdir/test_channel.vim
src/version.c

index 7edca1a19ab1aa22044348107523474a3fb133d6..aed234c3aca697643652fa7b7d538d60a37483da 100644 (file)
@@ -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
     }
 
index 17cdb7cac0df04538a50b4906223f64fcef7df6f..24a7ae454fc3ac251496839ffe9acf426cb0e089 100644 (file)
@@ -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')
index ec5c7b49c1bb9dbe084b161e7c5f5b3817982538..7d9b3db90c8af994f6a84a45a7f6ddc0da6382d6 100644 (file)
@@ -742,6 +742,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    29,
 /**/
     28,
 /**/