diff --git a/src/Make_mvc.mak b/src/Make_mvc.mak
index 0812f4d..272e2ab 100644
--- a/src/Make_mvc.mak
+++ b/src/Make_mvc.mak
@@ -683,7 +683,7 @@
 # on a crash (doesn't add overhead to the executable).
 #
 CFLAGS = $(CFLAGS) /Zi /Fd$(OUTDIR)/
-LINK_PDB = /PDB:$(OUTDIR)/$(VIM).pdb -debug # -debug:full -debugtype:cv,fixup
+LINK_PDB = /PDB:$(VIM).pdb -debug # -debug:full -debugtype:cv,fixup
 
 #
 # End extra feature include
@@ -761,7 +761,6 @@
 	- if exist $(VIM).pdb del $(VIM).pdb
 	- if exist $(VIM).map del $(VIM).map
 	- if exist $(VIM).ncb del $(VIM).ncb
-	- if exist gvim.exe.mnf del gvim.exe.mnf
 	- if exist vimrun.exe del vimrun.exe
 	- if exist install.exe del install.exe
 	- if exist uninstal.exe del uninstal.exe
@@ -943,7 +942,7 @@
 $(OUTDIR)/xpm_w32.obj: $(OUTDIR) xpm_w32.c
 	$(CC) $(CFLAGS) $(XPM_INC) xpm_w32.c
 
-$(OUTDIR)/vim.res:	$(OUTDIR) gvim.exe.mnf vim.rc version.h tools.bmp tearoff.bmp \
+$(OUTDIR)/vim.res:	$(OUTDIR) vim.rc version.h tools.bmp tearoff.bmp \
 		vim.ico vim_error.ico vim_alert.ico vim_info.ico vim_quest.ico
 	$(RC) /l 0x409 /Fo$(OUTDIR)/vim.res $(RCFLAGS) vim.rc
 
@@ -961,6 +960,7 @@
 # $CFLAGS may contain backslashes and double quotes, escape them both.
 E0_CFLAGS = $(CFLAGS:\=\\)
 E_CFLAGS = $(E0_CFLAGS:"=\")
+# ") stop the string
 
 $(PATHDEF_SRC): auto
 	@echo creating $(PATHDEF_SRC)
@@ -973,30 +973,6 @@
 	@echo char_u *compiled_user = (char_u *)"$(USERNAME)"; >> $(PATHDEF_SRC)
 	@echo char_u *compiled_sys = (char_u *)"$(USERDOMAIN)"; >> $(PATHDEF_SRC)
 
-gvim.exe.mnf: auto
-	@echo ^<?xml version="1.0" encoding="UTF-8" standalone="yes"?^> >$@
-	@echo ^<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"^> >>$@
-	@echo   ^<assemblyIdentity >>$@
-	@echo     processorArchitecture="$(ASSEMBLY_ARCHITECTURE)" >>$@
-	@echo     version="7.0.0.0" >>$@
-	@echo     type="win32" >>$@
-	@echo     name="Vim" >>$@
-	@echo   /^> >>$@
-	@echo   ^<description^>Vi Improved - A Text Editor^</description^> >>$@
-	@echo   ^<dependency^> >>$@
-	@echo     ^<dependentAssembly^> >>$@
-	@echo       ^<assemblyIdentity >>$@
-	@echo         type="win32" >>$@
-	@echo         name="Microsoft.Windows.Common-Controls" >>$@
-	@echo         version="6.0.0.0" >>$@
-	@echo         publicKeyToken="6595b64144ccf1df" >>$@
-	@echo         language="*" >>$@
-	@echo         processorArchitecture="$(ASSEMBLY_ARCHITECTURE)" >>$@
-	@echo       /^> >>$@
-	@echo     ^</dependentAssembly^> >>$@
-	@echo   ^</dependency^> >>$@
-	@echo ^</assembly^> >>$@
-
 auto:
 	if not exist auto/nul mkdir auto
 
diff --git a/src/eval.c b/src/eval.c
index 30f1635..4698024 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -1004,7 +1004,7 @@
     if (ga_grow(&redir_ga, (int)len) == OK)
     {
 	mch_memmove((char *)redir_ga.ga_data + redir_ga.ga_len, value, len);
-	redir_ga.ga_len += len;
+	redir_ga.ga_len += (int)len;
     }
     else
 	var_redir_stop();
@@ -10307,7 +10307,7 @@
     win_T	*wp;
 #endif
 
-    rettv->vval.v_number = FALSE;
+    rettv->vval.v_number = 0;
 #ifdef FEAT_QUICKFIX
     if (rettv_list_alloc(rettv) == OK)
     {
diff --git a/src/gvim.exe.mnf b/src/gvim.exe.mnf
index 70358c1..7a026bf 100644
--- a/src/gvim.exe.mnf
+++ b/src/gvim.exe.mnf
@@ -1,8 +1,8 @@
 <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
 <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
   <assemblyIdentity
-    processorArchitecture="X86"
-    version="6.2.0.0"
+    processorArchitecture="*"
+    version="7.0.0.0"
     type="win32"
     name="Vim"
   />
@@ -15,7 +15,7 @@
         version="6.0.0.0"
         publicKeyToken="6595b64144ccf1df"
         language="*"
-        processorArchitecture="X86"
+        processorArchitecture="*"
       />
     </dependentAssembly>
   </dependency>
diff --git a/src/misc2.c b/src/misc2.c
index 9ed3e40..14c4784 100644
--- a/src/misc2.c
+++ b/src/misc2.c
@@ -1246,7 +1246,7 @@
     char_u	*escaped_string;
 
     /* First count the number of extra bytes required. */
-    length = STRLEN(string) + 3;	/* two quotes and the trailing NUL */
+    length = (unsigned)STRLEN(string) + 3;  /* two quotes and a trailing NUL */
     for (p = string; *p != NUL; mb_ptr_adv(p))
     {
 # if defined(WIN32) || defined(WIN16) || defined(DOS)
@@ -3718,7 +3718,7 @@
  *
  * ATTENTION:
  * ==========
- *	Also we use an allocated search context here, this functions ARE NOT
+ *	Also we use an allocated search context here, this functions are NOT
  *	thread-safe!!!!!
  *
  *	To minimize parameter passing (or because I'm to lazy), only the
diff --git a/src/version.c b/src/version.c
index 4c22d49..7f2739b 100644
--- a/src/version.c
+++ b/src/version.c
@@ -667,6 +667,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    198,
+/**/
     197,
 /**/
     196,
