updated for version 7.4a.031
Problem:    Compiler warnings. (Charles Campbell)
Solution:   Initialize variables even when not needed.
diff --git a/src/regexp_nfa.c b/src/regexp_nfa.c
index 02fe49e..f920e09 100644
--- a/src/regexp_nfa.c
+++ b/src/regexp_nfa.c
@@ -4060,9 +4060,13 @@
 		sub = &subs->norm;
 	    }
 
+	    /* avoid compiler warnings */
+	    save_ptr = NULL;
+	    save_lpos.lnum = 0;
+	    save_lpos.col = 0;
+
 	    /* Set the position (with "off" added) in the subexpression.  Save
 	     * and restore it when it was in use.  Otherwise fill any gap. */
-	    save_ptr = NULL;
 	    if (REG_MULTI)
 	    {
 		if (subidx < sub->in_use)
@@ -4192,11 +4196,16 @@
 		    sub->list.multi[subidx].end.col =
 					  (colnr_T)(reginput - regline + off);
 		}
+		/* avoid compiler warnings */
+		save_ptr = NULL;
 	    }
 	    else
 	    {
 		save_ptr = sub->list.line[subidx].end;
 		sub->list.line[subidx].end = reginput + off;
+		/* avoid compiler warnings */
+		save_lpos.lnum = 0;
+		save_lpos.col = 0;
 	    }
 
 	    subs = addstate(l, state->out, subs, pim, off);
diff --git a/src/search.c b/src/search.c
index b3ff18f..23dc27e 100644
--- a/src/search.c
+++ b/src/search.c
@@ -4509,7 +4509,7 @@
     int		result;		/* result of various function calls */
     char_u	old_p_ws = p_ws;
     int		flags = 0;
-    pos_T	save_VIsual;
+    pos_T	save_VIsual = VIsual;
     int		one_char;
 
     /* wrapping should not occur */
@@ -4522,7 +4522,6 @@
     if (VIsual_active)
     {
 	orig_pos = curwin->w_cursor;
-	save_VIsual = VIsual;
 
 	pos = curwin->w_cursor;
 	start_pos = VIsual;
diff --git a/src/version.c b/src/version.c
index 65cd3b0..e241066 100644
--- a/src/version.c
+++ b/src/version.c
@@ -728,6 +728,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    31,
+/**/
     30,
 /**/
     29,