diff --git a/src/cindent.c b/src/cindent.c
index 2170980..e1f7446 100644
--- a/src/cindent.c
+++ b/src/cindent.c
@@ -2447,7 +2447,8 @@
 		char_u	    *line;
 
 		trypos = &our_paren_pos;
-		do {
+		do
+		{
 		    outermost = *trypos;
 		    curwin->w_cursor.lnum = outermost.lnum;
 		    curwin->w_cursor.col = outermost.col;
diff --git a/src/gui_haiku.cc b/src/gui_haiku.cc
index d083226..748f97e 100644
--- a/src/gui_haiku.cc
+++ b/src/gui_haiku.cc
@@ -2091,7 +2091,8 @@
     float buttonsHeight   = 0;
     BString strButtons(buttons);
     strButtons.RemoveAll("&");
-    do {
+    do
+    {
 	int32 end = strButtons.FindFirst('\n');
 	if (end != B_ERROR)
 	    strButtons.SetByteAt(end, '\0');
diff --git a/src/insexpand.c b/src/insexpand.c
index 91281bf..ade7bb7 100644
--- a/src/insexpand.c
+++ b/src/insexpand.c
@@ -5246,7 +5246,8 @@
     str = compl_match_array[target_idx].pum_text;
 
     comp = compl_first_match;
-    do {
+    do
+    {
 	if (comp->cp_score == score && (str == comp->cp_str.string || str == comp->cp_text[CPT_ABBR]))
 	    return comp;
 	comp = comp->cp_next;
diff --git a/src/register.c b/src/register.c
index 9d27706..72d3135 100644
--- a/src/register.c
+++ b/src/register.c
@@ -2068,7 +2068,8 @@
 	    else
 	    {
 		totlen = count * yanklen;
-		do {
+		do
+		{
 		    oldp = ml_get(lnum);
 		    oldlen = ml_get_len(lnum);
 		    if (lnum > start_lnum)
diff --git a/src/search.c b/src/search.c
index 43491b6..5222a43 100644
--- a/src/search.c
+++ b/src/search.c
@@ -5344,7 +5344,8 @@
     if (whole_line && start_pos->lnum != pos->lnum)
 	current_pos.lnum += dir;
 
-    do {
+    do
+    {
 
 	// Check if looped around and back to start position
 	if (looped_around && EQUAL_POS(current_pos, circly_end))
diff --git a/src/termlib.c b/src/termlib.c
index ad5165a..42eccf5 100644
--- a/src/termlib.c
+++ b/src/termlib.c
@@ -279,7 +279,8 @@
     char	*hold;
     int		i;
 
-    do {
+    do
+    {
 	tmp = _find(tmp, ":");			// For each field
 	while (*tmp == ':')			// skip empty fields
 	    tmp++;
diff --git a/src/usercmd.c b/src/usercmd.c
index fafa97d..ded11e7 100644
--- a/src/usercmd.c
+++ b/src/usercmd.c
@@ -606,7 +606,8 @@
 	    msg_outtrans_attr(cmd->uc_name, HL_ATTR(HLF_D));
 	    len = (int)cmd->uc_namelen + 4;
 
-	    do {
+	    do
+	    {
 		msg_putchar(' ');
 		++len;
 	    } while (len < 22);
@@ -626,7 +627,8 @@
 		case (EX_EXTRA|EX_NOSPC|EX_NEEDARG): IObuff[len++] = '1'; break;
 	    }
 
-	    do {
+	    do
+	    {
 		IObuff[len++] = ' ';
 	    } while (len < 5 - over);
 
@@ -649,7 +651,8 @@
 		    IObuff[len++] = '.';
 	    }
 
-	    do {
+	    do
+	    {
 		IObuff[len++] = ' ';
 	    } while (len < 8 - over);
 
@@ -663,7 +666,8 @@
 		    break;
 		}
 
-	    do {
+	    do
+	    {
 		IObuff[len++] = ' ';
 	    } while (len < 13 - over);
 
@@ -688,7 +692,8 @@
 #endif
 	    }
 
-	    do {
+	    do
+	    {
 		IObuff[len++] = ' ';
 	    } while (len < 25 - over);
 
diff --git a/src/version.c b/src/version.c
index 472f912..fb1f45b 100644
--- a/src/version.c
+++ b/src/version.c
@@ -705,6 +705,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1372,
+/**/
     1371,
 /**/
     1370,
diff --git a/src/viminfo.c b/src/viminfo.c
index 44d5487..f1e1fc3 100644
--- a/src/viminfo.c
+++ b/src/viminfo.c
@@ -2899,7 +2899,8 @@
 		if (virp->vir_version < VIMINFO_VERSION_WITH_REGISTERS)
 		    eof = read_viminfo_register(virp, forceit);
 		else
-		    do {
+		    do
+		    {
 			eof = viminfo_readline(virp);
 		    } while (!eof && (virp->vir_line[0] == TAB
 						|| virp->vir_line[0] == '<'));
