diff --git a/src/beval.c b/src/beval.c
index 375795e..cd91863 100644
--- a/src/beval.c
+++ b/src/beval.c
@@ -261,7 +261,7 @@
     save_curbuf = curbuf;
     curbuf = wp->w_buffer;
     use_sandbox = was_set_insecurely((char_u *)"balloonexpr",
-	    *curbuf->b_p_bexpr == NUL ? 0 : OPT_LOCAL);
+				    *curbuf->b_p_bexpr == NUL ? 0 : OPT_LOCAL);
     curbuf = save_curbuf;
     if (use_sandbox)
 	++sandbox;
diff --git a/src/cmdexpand.c b/src/cmdexpand.c
index 2366157..b5a7a3e 100644
--- a/src/cmdexpand.c
+++ b/src/cmdexpand.c
@@ -1484,8 +1484,8 @@
  *  EXPAND_FILES	    After command with EX_XFILE set, or after setting
  *			    with P_EXPAND set.	eg :e ^I, :w>>^I
  *  EXPAND_DIRECTORIES	    In some cases this is used instead of the latter
- *			    when we know only directories are of interest.  eg
- *			    :set dir=^I
+ *			    when we know only directories are of interest.
+ *			    E.g.  :set dir=^I  and  :cd ^I
  *  EXPAND_SHELLCMD	    After ":!cmd", ":r !cmd"  or ":w !cmd".
  *  EXPAND_SETTINGS	    Complete variable names.  eg :set d^I
  *  EXPAND_BOOL_SETTINGS    Complete boolean variables only,  eg :set no^I
diff --git a/src/ex_cmds.c b/src/ex_cmds.c
index 3ccb29a..085467e 100644
--- a/src/ex_cmds.c
+++ b/src/ex_cmds.c
@@ -5107,7 +5107,8 @@
 	    *cmd++ = NUL;		    // replace it with a NUL
     }
 
-    if (search_regcomp(pat, &used_pat, RE_BOTH, which_pat, SEARCH_HIS, &regmatch) == FAIL)
+    if (search_regcomp(pat, &used_pat, RE_BOTH, which_pat, SEARCH_HIS,
+							    &regmatch) == FAIL)
     {
 	emsg(_(e_invalid_command));
 	return;
diff --git a/src/getchar.c b/src/getchar.c
index 125f0b0..6817fa5 100644
--- a/src/getchar.c
+++ b/src/getchar.c
@@ -133,7 +133,7 @@
     for (bp = buffer->bh_first.b_next; bp != NULL; bp = bp->b_next)
 	count += (long_u)STRLEN(bp->b_str);
 
-    if ((count || dozero) && (p = alloc(count + 1)) != NULL)
+    if ((count > 0 || dozero) && (p = alloc(count + 1)) != NULL)
     {
 	p2 = p;
 	for (bp = buffer->bh_first.b_next; bp != NULL; bp = bp->b_next)
@@ -141,7 +141,7 @@
 		*p2++ = *str++;
 	*p2 = NUL;
     }
-    return (p);
+    return p;
 }
 
 /*
diff --git a/src/gui_beval.c b/src/gui_beval.c
index 9d85d90..bbfa2ba 100644
--- a/src/gui_beval.c
+++ b/src/gui_beval.c
@@ -404,8 +404,7 @@
 	}
 	else
 	{
-	    beval->timerID = g_timeout_add((guint)p_bdlay,
-		    &timeout_cb, beval);
+	    beval->timerID = g_timeout_add((guint)p_bdlay, &timeout_cb, beval);
 	}
     }
 }
diff --git a/src/insexpand.c b/src/insexpand.c
index 2737f2b..c20cb4f 100644
--- a/src/insexpand.c
+++ b/src/insexpand.c
@@ -3001,7 +3001,7 @@
 
     if (compl_dir_forward())
     {
-	// search backwards for the first valid (!= -1) number.
+	// Search backwards for the first valid (!= -1) number.
 	// This should normally succeed already at the first loop
 	// cycle, so it's fast!
 	for (match = compl_curr_match->cp_prev; match != NULL
@@ -3012,8 +3012,7 @@
 		break;
 	    }
 	if (match != NULL)
-	    // go up and assign all numbers which are not assigned
-	    // yet
+	    // go up and assign all numbers which are not assigned yet
 	    for (match = match->cp_next;
 		    match != NULL && match->cp_number == -1;
 					   match = match->cp_next)
@@ -3021,7 +3020,7 @@
     }
     else // BACKWARD
     {
-	// search forwards (upwards) for the first valid (!= -1)
+	// Search forwards (upwards) for the first valid (!= -1)
 	// number.  This should normally succeed already at the
 	// first loop cycle, so it's fast!
 	for (match = compl_curr_match->cp_next; match != NULL
@@ -3032,8 +3031,7 @@
 		break;
 	    }
 	if (match != NULL)
-	    // go down and assign all numbers which are not
-	    // assigned yet
+	    // go down and assign all numbers which are not assigned yet
 	    for (match = match->cp_prev; match
 		    && match->cp_number == -1;
 					   match = match->cp_prev)
diff --git a/src/job.c b/src/job.c
index 1d18abb..4e64ca3 100644
--- a/src/job.c
+++ b/src/job.c
@@ -383,7 +383,8 @@
 		val = tv_get_string(item);
 		if (STRCMP(val, "open") != 0 && STRCMP(val, "close") != 0)
 		{
-		    semsg(_(e_invalid_value_for_argument_str_str), "term_finish", val);
+		    semsg(_(e_invalid_value_for_argument_str_str),
+							   "term_finish", val);
 		    return FAIL;
 		}
 		opt->jo_set2 |= JO2_TERM_FINISH;
diff --git a/src/menu.c b/src/menu.c
index a543a50..04cd5f1 100644
--- a/src/menu.c
+++ b/src/menu.c
@@ -2318,8 +2318,8 @@
 /*
  * Execute "menu".  Use by ":emenu" and the window toolbar.
  * "eap" is NULL for the window toolbar.
- * "mode_idx" specifies a MENU_INDEX_ value, use -1 to depend on the current
- * state.
+ * "mode_idx" specifies a MENU_INDEX_ value, use MENU_INDEX_INVALID to depend
+ * on the current state.
  */
     void
 execute_menu(exarg_T *eap, vimmenu_T *menu, int mode_idx)
@@ -2329,7 +2329,7 @@
     if (idx < 0)
     {
 	// Use the Insert mode entry when returning to Insert mode.
-	if (restart_edit && !current_sctx.sc_sid)
+	if (restart_edit && current_sctx.sc_sid == 0)
 	{
 	    idx = MENU_INDEX_INSERT;
 	}
@@ -2513,7 +2513,7 @@
 {
     vimmenu_T	*menu;
     char_u	*arg = eap->arg;
-    int		mode_idx = -1;
+    int		mode_idx = MENU_INDEX_INVALID;
 
     if (arg[0] && VIM_ISWHITE(arg[1]))
     {
diff --git a/src/terminal.c b/src/terminal.c
index 997f83a..71602da 100644
--- a/src/terminal.c
+++ b/src/terminal.c
@@ -3310,7 +3310,7 @@
 }
 
 /*
- * If the number of lines that are stored goes over 'termscrollback' then
+ * If the number of lines that are stored goes over 'termwinscroll' then
  * delete the first 10%.
  * "gap" points to tl_scrollback or tl_scrollback_postponed.
  * "update_buffer" is TRUE when the buffer should be updated.
diff --git a/src/testdir/Makefile b/src/testdir/Makefile
index b69d935..fd2e56c 100644
--- a/src/testdir/Makefile
+++ b/src/testdir/Makefile
@@ -18,7 +18,7 @@
 #   The output goes into a file "valgrind.testN"
 #   Vim should be compiled with EXITFREE to avoid false warnings.
 #   This will make testing about 10 times as slow.
-# VALGRIND = valgrind --tool=memcheck --leak-check=yes --num-callers=35 --log-file=valgrind.$*
+# VALGRIND = valgrind --tool=memcheck --leak-check=yes --num-callers=45 --log-file=valgrind.$*
 
 # To execute one test, e.g. in gdb, use something like this:
 # run -f -u unix.vim --gui-dialog-file guidialog -U NONE --noplugin --not-a-term -S runtest.vim test_name.vim
diff --git a/src/version.c b/src/version.c
index 0df4436..b8cc4d9 100644
--- a/src/version.c
+++ b/src/version.c
@@ -696,6 +696,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1479,
+/**/
     1478,
 /**/
     1477,
diff --git a/src/vim9compile.c b/src/vim9compile.c
index 64526aa..e689c55 100644
--- a/src/vim9compile.c
+++ b/src/vim9compile.c
@@ -2646,7 +2646,7 @@
 			lhs_type = &t_number;
 		    if (*p != '=' && need_type(rhs_type, lhs_type, FALSE,
 					    -1, 0, cctx, FALSE, FALSE) == FAIL)
-		    goto theend;
+			goto theend;
 		}
 	    }
 	    else if (cmdidx == CMD_final)
diff --git a/src/window.c b/src/window.c
index 3405285..6b86825 100644
--- a/src/window.c
+++ b/src/window.c
@@ -4633,7 +4633,7 @@
 leave_tabpage(
     buf_T	*new_curbuf UNUSED,    // what is going to be the new curbuf,
 				       // NULL if unknown
-    int		trigger_leave_autocmds UNUSED)
+    int		trigger_leave_autocmds)
 {
     tabpage_T	*tp = curtab;
 
