changeset 12367:7ae2b2c84ec5 v8.0.1063

patch 8.0.1063: Coverity warns for NULL check and array use commit https://github.com/vim/vim/commit/28550b74bb4373417eb6fbf132bd4211b7b92afa Author: Bram Moolenaar <Bram@vim.org> Date: Tue Sep 5 23:31:01 2017 +0200 patch 8.0.1063: Coverity warns for NULL check and array use Problem: Coverity warns for NULL check and using variable pointer as an array. Solution: Remove the NULL check. Make "argvar" an array.
author Christian Brabandt <cb@256bit.org>
date Tue, 05 Sep 2017 23:45:04 +0200
parents 1e2c608b8049
children 4fe07a0c9b47
files src/terminal.c src/version.c
diffstat 2 files changed, 11 insertions(+), 7 deletions(-) [+]
line wrap: on
line diff
--- a/src/terminal.c
+++ b/src/terminal.c
@@ -462,7 +462,7 @@ term_start(typval_T *argvar, jobopt_T *o
     void
 ex_terminal(exarg_T *eap)
 {
-    typval_T	argvar;
+    typval_T	argvar[2];
     jobopt_T	opt;
     char_u	*cmd;
     char_u	*tofree = NULL;
@@ -525,8 +525,8 @@ ex_terminal(exarg_T *eap)
 	}
 	cmd = skipwhite(p);
     }
-    if (cmd == NULL || *cmd == NUL)
-	/* Make a copy, an autocommand may set 'shell'. */
+    if (*cmd == NUL)
+	/* Make a copy of 'shell', an autocommand may change the option. */
 	tofree = cmd = vim_strsave(p_sh);
 
     if (eap->addr_count > 0)
@@ -539,9 +539,10 @@ ex_terminal(exarg_T *eap)
 	opt.jo_in_bot = eap->line2;
     }
 
-    argvar.v_type = VAR_STRING;
-    argvar.vval.v_string = cmd;
-    term_start(&argvar, &opt, eap->forceit);
+    argvar[0].v_type = VAR_STRING;
+    argvar[0].vval.v_string = cmd;
+    argvar[1].v_type = VAR_UNKNOWN;
+    term_start(argvar, &opt, eap->forceit);
     vim_free(tofree);
 }
 
@@ -2886,7 +2887,8 @@ f_term_wait(typval_T *argvars, typval_T 
 	    && STRCMP(job_status(buf->b_term->tl_job), "dead") == 0)
     {
 	/* The job is dead, keep reading channel I/O until the channel is
-	 * closed. */
+	 * closed. buf->b_term may become NULL if the terminal was closed while
+	 * waiting. */
 	ch_log(NULL, "term_wait(): waiting for channel to close");
 	while (buf->b_term != NULL && !buf->b_term->tl_channel_closed)
 	{
--- a/src/version.c
+++ b/src/version.c
@@ -770,6 +770,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1063,
+/**/
     1062,
 /**/
     1061,