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)
 		{