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.
diff --git a/src/terminal.c b/src/terminal.c
index b3f5f0a..3ceb360 100644
--- a/src/terminal.c
+++ b/src/terminal.c
@@ -462,7 +462,7 @@
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 @@
}
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 @@
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 @@
&& 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)
{
diff --git a/src/version.c b/src/version.c
index 5fe8eed..6be7b82 100644
--- a/src/version.c
+++ b/src/version.c
@@ -770,6 +770,8 @@
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 1063,
+/**/
1062,
/**/
1061,