patch 9.0.0364: clang static analyzer gives warnings
Problem: Clang static analyzer gives warnings.
Solution: Avoid the warnings. (Yegappan Lakshmanan, closes #11043)
diff --git a/src/evalvars.c b/src/evalvars.c
index f5761f9..0d1fe82 100644
--- a/src/evalvars.c
+++ b/src/evalvars.c
@@ -1089,7 +1089,6 @@
{
// +=, /=, etc. require an existing variable
semsg(_(e_cannot_use_operator_on_new_variable), eap->arg);
- i = FAIL;
}
else if (vim_strchr((char_u *)"+-*/%.", *expr) != NULL)
{
@@ -1112,7 +1111,6 @@
vim_strncpy(op, expr - len, len);
semsg(_(e_white_space_required_before_and_after_str_at_str),
op, argend);
- i = FAIL;
}
if (eap->skip)
diff --git a/src/float.c b/src/float.c
index ef9b830..aa7d697 100644
--- a/src/float.c
+++ b/src/float.c
@@ -54,12 +54,11 @@
if (skip_quotes && vim_strchr((char_u *)s, '\'') != NULL)
{
char_u buf[100];
- char_u *p = buf;
+ char_u *p;
int quotes = 0;
vim_strncpy(buf, (char_u *)s, 99);
- p = buf;
- for (;;)
+ for (p = buf; ; p = skipdigits(p))
{
// remove single quotes between digits, not in the exponent
if (*p == '\'')
@@ -69,7 +68,6 @@
}
if (!vim_isdigit(*p))
break;
- p = skipdigits(p);
}
s = (char *)buf;
f = strtod(s, &s);
diff --git a/src/highlight.c b/src/highlight.c
index 303d5c2..d0d6fde 100644
--- a/src/highlight.c
+++ b/src/highlight.c
@@ -4515,7 +4515,7 @@
# endif
p = add_attr_and_value(p, (char_u *)" guifg=", 7, guifg);
p = add_attr_and_value(p, (char_u *)" guibg=", 7, guibg);
- p = add_attr_and_value(p, (char_u *)" guisp=", 7, guisp);
+ (void)add_attr_and_value(p, (char_u *)" guisp=", 7, guisp);
do_highlight(hlsetBuf, forceit, FALSE);
diff --git a/src/mbyte.c b/src/mbyte.c
index 54f7fa4..d3a4644 100644
--- a/src/mbyte.c
+++ b/src/mbyte.c
@@ -5617,7 +5617,6 @@
}
// Store the items in the new table.
- item = 0;
for (item = 0; item < l->lv_len; ++item)
{
listitem_T *lili = ptrs[item];
diff --git a/src/ops.c b/src/ops.c
index 4733976..5629a1a 100644
--- a/src/ops.c
+++ b/src/ops.c
@@ -1282,11 +1282,11 @@
#ifdef FEAT_NETBEANS_INTG
if (netbeans_active() && one_change)
{
- char_u *ptr = ml_get_buf(curbuf, pos.lnum, FALSE);
+ char_u *ptr;
netbeans_removed(curbuf, pos.lnum, bd.textcol,
(long)bd.textlen);
- // get the line again, it may have been flushed
+ // get the line now, it may have been flushed
ptr = ml_get_buf(curbuf, pos.lnum, FALSE);
netbeans_inserted(curbuf, pos.lnum, bd.textcol,
&ptr[bd.textcol], bd.textlen);
diff --git a/src/tag.c b/src/tag.c
index 3141e76..c1f6e65 100644
--- a/src/tag.c
+++ b/src/tag.c
@@ -4368,7 +4368,12 @@
{
for (i = 0; i < num_matches; ++i)
{
- parse_match(matches[i], &tp);
+ if (parse_match(matches[i], &tp) == FAIL)
+ {
+ vim_free(matches[i]);
+ continue;
+ }
+
is_static = test_for_static(&tp);
// Skip pseudo-tag lines.
diff --git a/src/version.c b/src/version.c
index a681292..a3d8f2c 100644
--- a/src/version.c
+++ b/src/version.c
@@ -708,6 +708,8 @@
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 364,
+/**/
363,
/**/
362,
diff --git a/src/vim9compile.c b/src/vim9compile.c
index 2036675..a785ba9 100644
--- a/src/vim9compile.c
+++ b/src/vim9compile.c
@@ -2243,9 +2243,9 @@
r = compile_expr0_ext(&p, cctx, &is_const);
if (lhs.lhs_new_local)
++cctx->ctx_locals.ga_len;
- if (r == FAIL)
- goto theend;
}
+ if (r == FAIL)
+ goto theend;
}
else if (semicolon && var_idx == var_count - 1)
{