diff --git a/src/clientserver.c b/src/clientserver.c
index 15e490f..bb2108d 100644
--- a/src/clientserver.c
+++ b/src/clientserver.c
@@ -420,7 +420,7 @@
 	     * For --remote-wait: Wait until the server did edit each
 	     * file.  Also detect that the server no longer runs.
 	     */
-	    if (ret >= 0 && argtype == ARGTYPE_EDIT_WAIT)
+	    if (argtype == ARGTYPE_EDIT_WAIT)
 	    {
 		int	numFiles = *argc - i - 1;
 		int	j;
diff --git a/src/drawline.c b/src/drawline.c
index d8b7c4a..747a1e3 100644
--- a/src/drawline.c
+++ b/src/drawline.c
@@ -1226,8 +1226,7 @@
 	    {
 		draw_state = WL_BRI;
 		// if need_showbreak is set, breakindent also applies
-		if (wp->w_p_bri && n_extra == 0
-					 && (row != startrow || need_showbreak)
+		if (wp->w_p_bri && (row != startrow || need_showbreak)
 # ifdef FEAT_DIFF
 			&& filler_lines == 0
 # endif
diff --git a/src/drawscreen.c b/src/drawscreen.c
index cdfcac0..a562c4d 100644
--- a/src/drawscreen.c
+++ b/src/drawscreen.c
@@ -1950,9 +1950,8 @@
 
 	if (VIsual_active)
 	{
-	    if (VIsual_active
-		    && (VIsual_mode != wp->w_old_visual_mode
-			|| type == INVERTED_ALL))
+	    if (VIsual_mode != wp->w_old_visual_mode
+		|| type == INVERTED_ALL)
 	    {
 		// If the type of Visual selection changed, redraw the whole
 		// selection.  Also when the ownership of the X selection is
diff --git a/src/ex_cmds.c b/src/ex_cmds.c
index 13cde84..be358453 100644
--- a/src/ex_cmds.c
+++ b/src/ex_cmds.c
@@ -2411,8 +2411,7 @@
 	if (curbufIsChanged())
 #endif
 	{
-	    if (other)
-		--no_wait_return;
+	    --no_wait_return;
 	    no_write_message();
 	    retval = GETFILE_NOT_WRITTEN;	// file has been changed
 	    goto theend;
diff --git a/src/fileio.c b/src/fileio.c
index 21417c2..9ef2dbd 100644
--- a/src/fileio.c
+++ b/src/fileio.c
@@ -4933,7 +4933,7 @@
 		break;
 	    }
 
-	    if (!ignore && checkitem != NULL)
+	    if (checkitem != NULL)
 	    {
 		int r = checkitem(context, item);
 
diff --git a/src/message.c b/src/message.c
index af91bd8..2499723 100644
--- a/src/message.c
+++ b/src/message.c
@@ -1803,7 +1803,7 @@
 	int len = (*mb_ptr2len)(str);
 
 	// For multi-byte characters check for an illegal byte.
-	if (has_mbyte && MB_BYTE2LEN(*str) > len)
+	if (MB_BYTE2LEN(*str) > len)
 	{
 	    transchar_nonprint(curbuf, buf, c);
 	    *sp = str + 1;
diff --git a/src/misc2.c b/src/misc2.c
index 38da7e5..c23c689 100644
--- a/src/misc2.c
+++ b/src/misc2.c
@@ -596,7 +596,7 @@
 	    // Make sure that coladd is not more than the char width.
 	    // Not for the last character, coladd is then used when the cursor
 	    // is actually after the last character.
-	    if (win->w_cursor.col + 1 < len && win->w_cursor.coladd > 0)
+	    if (win->w_cursor.col + 1 < len)
 	    {
 		int cs, ce;
 
diff --git a/src/ops.c b/src/ops.c
index 1c13dac..30e88c7 100644
--- a/src/ops.c
+++ b/src/ops.c
@@ -1310,7 +1310,7 @@
 	    changed_lines(oap->start.lnum, oap->start.col, oap->end.lnum + 1,
 									  0L);
 #ifdef FEAT_NETBEANS_INTG
-	    if (netbeans_active() && did_change)
+	    if (netbeans_active())
 	    {
 		char_u *ptr;
 		int count;
diff --git a/src/sign.c b/src/sign.c
index e1aae51..3d9c387 100644
--- a/src/sign.c
+++ b/src/sign.c
@@ -847,7 +847,7 @@
 	if (sign->se_lnum < line1)
 	    continue;
 	new_lnum = sign->se_lnum;
-	if (sign->se_lnum >= line1 && sign->se_lnum <= line2)
+	if (sign->se_lnum <= line2)
 	{
 	    if (amount != MAXLNUM)
 		new_lnum += amount;
diff --git a/src/spell.c b/src/spell.c
index 81ba049..5145ce1 100644
--- a/src/spell.c
+++ b/src/spell.c
@@ -1371,11 +1371,10 @@
 		    // the cursor.
 		    if (dir == BACKWARD
 			    || lnum != wp->w_cursor.lnum
-			    || (lnum == wp->w_cursor.lnum
-				&& (wrapped
-				    || (colnr_T)(curline ? p - buf + len
+			    || (wrapped
+				|| (colnr_T)(curline ? p - buf + len
 						     : p - buf)
-						  > wp->w_cursor.col)))
+						  > wp->w_cursor.col))
 		    {
 #ifdef FEAT_SYN_HL
 			if (has_syntax)
diff --git a/src/version.c b/src/version.c
index cd3d9cd..c642567 100644
--- a/src/version.c
+++ b/src/version.c
@@ -751,6 +751,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    4610,
+/**/
     4609,
 /**/
     4608,
diff --git a/src/vim9cmds.c b/src/vim9cmds.c
index cc2c041..072a106 100644
--- a/src/vim9cmds.c
+++ b/src/vim9cmds.c
@@ -1613,8 +1613,7 @@
 	// End :catch or :finally scope: set instruction index in ISN_TRY
 	// instruction
 	try_isn->isn_arg.tryref.try_ref->try_endtry = instr->ga_len;
-	if (cctx->ctx_skip != SKIP_YES
-				   && generate_instr(cctx, ISN_ENDTRY) == NULL)
+	if (generate_instr(cctx, ISN_ENDTRY) == NULL)
 	    return NULL;
 #ifdef FEAT_PROFILE
 	if (cctx->ctx_compile_type == CT_PROFILE)
diff --git a/src/window.c b/src/window.c
index 435ad03..5bda6ad 100644
--- a/src/window.c
+++ b/src/window.c
@@ -5691,8 +5691,7 @@
 		break;
 	    if (run == 2 || curfrp->fr_width == Columns)
 	    {
-		if (height > room + room_cmdline)
-		    height = room + room_cmdline;
+		height = room + room_cmdline;
 		break;
 	    }
 	    frame_setheight(curfrp->fr_parent, height
@@ -5876,8 +5875,7 @@
 		break;
 	    if (run == 2 || curfrp->fr_height >= ROWS_AVAIL)
 	    {
-		if (width > room)
-		    width = room;
+		width = room;
 		break;
 	    }
 	    frame_setwidth(curfrp->fr_parent, width
