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