diff --git a/src/arglist.c b/src/arglist.c
index b35cdfe..6183faf 100644
--- a/src/arglist.c
+++ b/src/arglist.c
@@ -413,8 +413,7 @@
 
 	didone = FALSE;
 	for (match = 0; match < ARGCOUNT; ++match)
-	    if (vim_regexec(&regmatch, alist_name(&ARGLIST[match]),
-			(colnr_T)0))
+	    if (vim_regexec(&regmatch, alist_name(&ARGLIST[match]), (colnr_T)0))
 	    {
 		didone = TRUE;
 		vim_free(ARGLIST[match].ae_fname);
diff --git a/src/gui_xim.c b/src/gui_xim.c
index d384cbc..6998f0c 100644
--- a/src/gui_xim.c
+++ b/src/gui_xim.c
@@ -133,7 +133,7 @@
 
 #if defined(FEAT_EVAL) || defined(PROTO)
 /*
- * Mark the global 'imactivatefunc' and 'imstatusfunc' callbacks with 'copyID'
+ * Mark the global 'imactivatefunc' and 'imstatusfunc' callbacks with "copyID"
  * so that they are not garbage collected.
  */
     int
diff --git a/src/libvterm/src/parser.c b/src/libvterm/src/parser.c
index d4cd0dc..0d1e12b 100644
--- a/src/libvterm/src/parser.c
+++ b/src/libvterm/src/parser.c
@@ -34,7 +34,7 @@
 
   if(vt->parser.callbacks && vt->parser.callbacks->csi)
     if((*vt->parser.callbacks->csi)(
-          vt->parser.v.csi.leaderlen ? vt->parser.v.csi.leader : NULL, 
+          vt->parser.v.csi.leaderlen ? vt->parser.v.csi.leader : NULL,
           vt->parser.v.csi.args,
           vt->parser.v.csi.argi,
           vt->parser.intermedlen ? vt->parser.intermed : NULL,
diff --git a/src/list.c b/src/list.c
index c67b7fe..8f228a1 100644
--- a/src/list.c
+++ b/src/list.c
@@ -109,6 +109,8 @@
 
 /*
  * Allocate space for a list, plus "count" items.
+ * This uses one allocation for efficiency.
+ * The reference count is not set.
  * Next list_set_item() must be called for each item.
  */
     list_T *
@@ -117,33 +119,34 @@
     list_T	*l;
 
     l = (list_T *)alloc_clear(sizeof(list_T) + count * sizeof(listitem_T));
-    if (l != NULL)
+    if (l == NULL)
+	return NULL;
+
+    list_init(l);
+
+    if (count > 0)
     {
-	list_init(l);
+	listitem_T	*li = (listitem_T *)(l + 1);
+	int		i;
 
-	if (count > 0)
+	l->lv_len = count;
+	l->lv_with_items = count;
+	l->lv_first = li;
+	l->lv_u.mat.lv_last = li + count - 1;
+	for (i = 0; i < count; ++i)
 	{
-	    listitem_T	*li = (listitem_T *)(l + 1);
-	    int		i;
-
-	    l->lv_len = count;
-	    l->lv_with_items = count;
-	    l->lv_first = li;
-	    l->lv_u.mat.lv_last = li + count - 1;
-	    for (i = 0; i < count; ++i)
-	    {
-		if (i == 0)
-		    li->li_prev = NULL;
-		else
-		    li->li_prev = li - 1;
-		if (i == count - 1)
-		    li->li_next = NULL;
-		else
-		    li->li_next = li + 1;
-		++li;
-	    }
+	    if (i == 0)
+		li->li_prev = NULL;
+	    else
+		li->li_prev = li - 1;
+	    if (i == count - 1)
+		li->li_next = NULL;
+	    else
+		li->li_next = li + 1;
+	    ++li;
 	}
     }
+
     return l;
 }
 
diff --git a/src/main.c b/src/main.c
index 3a050cf..ca28eca 100644
--- a/src/main.c
+++ b/src/main.c
@@ -1298,16 +1298,15 @@
 #endif
 
 	    // Trigger CursorMoved if the cursor moved.
-	    if (!finish_op && (
-			has_cursormoved()
+	    if (!finish_op && (has_cursormoved()
 #ifdef FEAT_PROP_POPUP
-			|| popup_visible
+				|| popup_visible
 #endif
 #ifdef FEAT_CONCEAL
-			|| curwin->w_p_cole > 0
+				|| curwin->w_p_cole > 0
 #endif
-			)
-		 && !EQUAL_POS(last_cursormoved, curwin->w_cursor))
+			      )
+		    && !EQUAL_POS(last_cursormoved, curwin->w_cursor))
 	    {
 		if (has_cursormoved())
 		    apply_autocmds(EVENT_CURSORMOVED, NULL, NULL,
@@ -1401,10 +1400,8 @@
 	    }
 #endif
 
-	    /*
-	     * Before redrawing, make sure w_topline is correct, and w_leftcol
-	     * if lines don't wrap, and w_skipcol if lines wrap.
-	     */
+	    // Before redrawing, make sure w_topline is correct, and w_leftcol
+	    // if lines don't wrap, and w_skipcol if lines wrap.
 	    update_topline();
 	    validate_cursor();
 
diff --git a/src/ops.c b/src/ops.c
index 6e51822..bd92786 100644
--- a/src/ops.c
+++ b/src/ops.c
@@ -3422,7 +3422,7 @@
 
 #if defined(FEAT_EVAL) || defined(PROTO)
 /*
- * Mark the global 'operatorfunc' callback with 'copyID' so that it is not
+ * Mark the global 'operatorfunc' callback with "copyID" so that it is not
  * garbage collected.
  */
     int
diff --git a/src/screen.c b/src/screen.c
index 5855b90..4728811 100644
--- a/src/screen.c
+++ b/src/screen.c
@@ -1017,7 +1017,7 @@
     char_u	*stl;
     char_u	*p;
     char_u	*opt_name;
-    int         opt_scope = 0;
+    int		opt_scope = 0;
     stl_hlrec_T *hltab;
     stl_hlrec_T *tabtab;
     win_T	*ewp;
diff --git a/src/terminal.c b/src/terminal.c
index fe82fa3..d0cdd45 100644
--- a/src/terminal.c
+++ b/src/terminal.c
@@ -1234,8 +1234,8 @@
 	    gui_mch_flush();
 	}
 #endif
-        // Make sure an invoked autocmd doesn't delete the buffer (and the
-        // terminal) under our fingers.
+	// Make sure an invoked autocmd doesn't delete the buffer (and the
+	// terminal) under our fingers.
 	++term->tl_buffer->b_locked;
 
 	// save and restore curwin and curbuf, in case the autocmd changes them
diff --git a/src/version.c b/src/version.c
index 54eb355..55f363f 100644
--- a/src/version.c
+++ b/src/version.c
@@ -696,6 +696,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    934,
+/**/
     933,
 /**/
     932,
