updated for version 7.0072
diff --git a/src/Make_mvc.mak b/src/Make_mvc.mak
index de68e19..4d4ea22 100644
--- a/src/Make_mvc.mak
+++ b/src/Make_mvc.mak
@@ -296,8 +296,6 @@
 !endif
 CFLAGS = $(CFLAGS) $(OPTFLAG) -DNDEBUG $(CPUARG)
 RCFLAGS = $(rcflags) $(rcvars) -DNDEBUG
-PDB =
-LINK_PDB =
 ! ifdef USE_MSVCRT
 CFLAGS = $(CFLAGS) -MD
 LIBC = msvcrt.lib
@@ -308,13 +306,7 @@
 ! endif
 !else  # DEBUG
 VIM = vimd
-# MSVC 4.1
-PDB = /Fd$(OUTDIR)/
-LINK_PDB = /PDB:$(OUTDIR)/
-# MSVC 2.2
-# PDB = /Fd$(OUTDIR)/vim.pdb
-# LINK_PDB = /PDB:$(OUTDIR)/vim.pdb
-CFLAGS = $(CFLAGS) -D_DEBUG -DDEBUG /Zi /Od
+CFLAGS = $(CFLAGS) -D_DEBUG -DDEBUG /Od
 RCFLAGS = $(rcflags) $(rcvars) -D_DEBUG -DDEBUG
 # The /fixed:no is needed for Quantify. Assume not 4.? as unsupported in VC4.0.
 ! if "$(_NMAKE_VER)" == ""
@@ -620,7 +612,15 @@
 CFLAGS = $(CFLAGS) -DFEAT_$(FEATURES)
 
 #
-# End extra featuare include
+# Always generate the .pdb file, so that we get debug symbols that can be used
+# on a crash (doesn't add overhead to the executable).
+#
+CFLAGS = $(CFLAGS) /Zi
+PDB = /Fd$(OUTDIR)/
+LINK_PDB = /PDB:$(OUTDIR)/$(VIM).pdb -debug:full -debugtype:cv,fixup
+
+#
+# End extra feature include
 #
 !message
 
diff --git a/src/ex_docmd.c b/src/ex_docmd.c
index 76fafef..38a7d44 100644
--- a/src/ex_docmd.c
+++ b/src/ex_docmd.c
@@ -7815,8 +7815,8 @@
 		    || *arg == '"')
 	    {
 		redir_reg = *arg++;
-		if (*arg == '>')
-		    ++arg;
+		if (*arg == '>' && arg[1] == '>')
+		    arg += 2;
 		else if (*arg == NUL && (islower(redir_reg)
 # ifdef FEAT_CLIPBOARD
 			    || redir_reg == '*'
@@ -7829,8 +7829,8 @@
 	    }
 	    if (*arg != NUL)
 	    {
-		EMSG2(_(e_invarg2), eap->arg);
 		redir_reg = 0;
+		EMSG2(_(e_invarg2), eap->arg);
 	    }
 	}
 	else if (*arg == '=' && arg[1] == '>')
diff --git a/src/normal.c b/src/normal.c
index e5404ef..ec38db2 100644
--- a/src/normal.c
+++ b/src/normal.c
@@ -3929,13 +3929,17 @@
     int		save_p_scs;
     char_u	*ptr;
 
-    if ((len = find_ident_under_cursor(&ptr, FIND_IDENT)) == 0 ||
-					       (pat = alloc(len + 5)) == NULL)
+    if ((len = find_ident_under_cursor(&ptr, FIND_IDENT)) == 0
+	    || (pat = alloc(len + 7)) == NULL)
     {
 	clearopbeep(oap);
 	return;
     }
-    sprintf((char *)pat, vim_iswordp(ptr) ? "\\<%.*s\\>" : "%.*s", len, ptr);
+
+    /* Put "\V" before the pattern to avoid that the special meaning of "."
+     * and "~" causes trouble. */
+    sprintf((char *)pat, vim_iswordp(ptr) ? "\\V\\<%.*s\\>" : "\\V%.*s",
+								    len, ptr);
     old_pos = curwin->w_cursor;
     save_p_ws = p_ws;
     save_p_scs = p_scs;
diff --git a/src/testdir/Make_os2.mak b/src/testdir/Make_os2.mak
index 235e147..3f63cec 100644
--- a/src/testdir/Make_os2.mak
+++ b/src/testdir/Make_os2.mak
@@ -23,7 +23,8 @@
 		test33.out test34.out test35.out test36.out test37.out \
 		test38.out test39.out test40.out test41.out test42.out \
 		test43.out test44.out test45.out test46.out test47.out \
-		test48.out test51.out test53.out test54.out test55.out
+		test48.out test51.out test53.out test54.out test55.out \
+		test56.out
 
 .SUFFIXES: .in .out
 
diff --git a/src/vim.h b/src/vim.h
index fde8ac1..ab2bb42 100644
--- a/src/vim.h
+++ b/src/vim.h
@@ -1227,7 +1227,15 @@
 #define LSIZE	    512		/* max. size of a line in the tags file */
 
 #define IOSIZE	   (1024+1)	/* file i/o and sprintf buffer size */
-#define MSG_BUF_LEN 80		/* length of buffer for small messages */
+
+#ifdef FEAT_MBYTE
+# define MSG_BUF_LEN 480	/* length of buffer for small messages */
+# define MSG_BUF_CLEN  (MSG_BUF_LEN / 6)    /* cell length (worst case: utf-8
+					       takes 6 bytes for one cell) */
+#else
+# define MSG_BUF_LEN 80		/* length of buffer for small messages */
+# define MSG_BUF_CLEN  MSG_BUF_LEN	    /* cell length */
+#endif
 
 #if defined(AMIGA) || defined(__linux__) || defined(__QNX__) || defined(__CYGWIN32__) || defined(_AIX)
 # define TBUFSZ 2048		/* buffer size for termcap entry */