diff --git a/src/feature.h b/src/feature.h
index 8733199..f007df6 100644
--- a/src/feature.h
+++ b/src/feature.h
@@ -723,16 +723,10 @@
 
 /*
  * +browse		":browse" command.
- *
- * BROWSE_CURRBUF	Open file browser in the directory of the current
- *			buffer, instead of the current directory.
  */
 #if defined(FEAT_NORMAL) && (defined(FEAT_GUI_MSWIN) || defined(FEAT_GUI_KDE) || defined(FEAT_GUI_MOTIF) || defined(FEAT_GUI_ATHENA) || defined(FEAT_GUI_GTK) || defined(FEAT_GUI_PHOTON) || defined(FEAT_GUI_MAC))
 # define FEAT_BROWSE
 #endif
-#if defined(FEAT_NORMAL) && defined(FEAT_GUI_MSWIN)
-# define BROWSE_CURRBUF
-#endif
 
 /*
  * +dialog_gui		Use GUI dialog.
@@ -829,11 +823,6 @@
 /* #define GVIMRC_FILE	".gvimrc" */
 
 /*
- * VIEW_FILE		Name of the default ":mkview" file.
- */
-#define VIEW_FILE	"View.vim"
-
-/*
  * SESSION_FILE		Name of the default ":mksession" file.
  */
 #define SESSION_FILE	"Session.vim"
diff --git a/src/gui.c b/src/gui.c
index d9ac839..e955869 100644
--- a/src/gui.c
+++ b/src/gui.c
@@ -375,14 +375,14 @@
 	     * The first that exists is used, the rest is ignored.
 	     */
 	    if (process_env((char_u *)"GVIMINIT", FALSE) == FAIL
-		 && do_source((char_u *)USR_GVIMRC_FILE, TRUE, FALSE) == FAIL
+		 && do_source((char_u *)USR_GVIMRC_FILE, TRUE, TRUE) == FAIL
 #ifdef USR_GVIMRC_FILE2
-		 && do_source((char_u *)USR_GVIMRC_FILE2, TRUE, FALSE) == FAIL
+		 && do_source((char_u *)USR_GVIMRC_FILE2, TRUE, TRUE) == FAIL
 #endif
 				)
 	    {
 #ifdef USR_GVIMRC_FILE3
-		(void)do_source((char_u *)USR_GVIMRC_FILE3, TRUE, FALSE);
+		(void)do_source((char_u *)USR_GVIMRC_FILE3, TRUE, TRUE);
 #endif
 	    }
 
@@ -426,7 +426,7 @@
 				     (char_u *)GVIMRC_FILE, FALSE) != FPC_SAME
 #endif
 			)
-		    do_source((char_u *)GVIMRC_FILE, TRUE, FALSE);
+		    do_source((char_u *)GVIMRC_FILE, TRUE, TRUE);
 
 		if (secure == 2)
 		    need_wait_return = TRUE;
diff --git a/src/gui.h b/src/gui.h
index d637554..646be97 100644
--- a/src/gui.h
+++ b/src/gui.h
@@ -7,10 +7,6 @@
  * Do ":help credits" in Vim to see a list of people who contributed.
  */
 
-/* For debugging */
-/* #define D(x)	printf x; */
-#define D(x)
-
 #ifdef FEAT_GUI_MOTIF
 # define FEAT_GUI_X11
 # include <Xm/Xm.h>
diff --git a/src/gui_w48.c b/src/gui_w48.c
index be23546..97a0ca0 100644
--- a/src/gui_w48.c
+++ b/src/gui_w48.c
@@ -3500,7 +3500,10 @@
 	{
 	    argv = (char **)malloc((argc + 1) * sizeof(char *));
 	    if (argv == NULL )
+	    {
+		vim_free(newcmdline);
 		return 0;		   /* malloc error */
+	    }
 	    pnew = newcmdline;
 	}
     }
diff --git a/src/keymap.h b/src/keymap.h
index 96e8804..7bc6c47 100644
--- a/src/keymap.h
+++ b/src/keymap.h
@@ -343,33 +343,7 @@
 
 #define K_S_F11		TERMCAP2KEY(KS_EXTRA, KE_S_F11)
 #define K_S_F12		TERMCAP2KEY(KS_EXTRA, KE_S_F12)
-#define K_S_F13		TERMCAP2KEY(KS_EXTRA, KE_S_F13)
-#define K_S_F14		TERMCAP2KEY(KS_EXTRA, KE_S_F14)
-#define K_S_F15		TERMCAP2KEY(KS_EXTRA, KE_S_F15)
-#define K_S_F16		TERMCAP2KEY(KS_EXTRA, KE_S_F16)
-#define K_S_F17		TERMCAP2KEY(KS_EXTRA, KE_S_F17)
-#define K_S_F18		TERMCAP2KEY(KS_EXTRA, KE_S_F18)
-#define K_S_F19		TERMCAP2KEY(KS_EXTRA, KE_S_F19)
-#define K_S_F20		TERMCAP2KEY(KS_EXTRA, KE_S_F20)
-
-#define K_S_F21		TERMCAP2KEY(KS_EXTRA, KE_S_F21)
-#define K_S_F22		TERMCAP2KEY(KS_EXTRA, KE_S_F22)
-#define K_S_F23		TERMCAP2KEY(KS_EXTRA, KE_S_F23)
-#define K_S_F24		TERMCAP2KEY(KS_EXTRA, KE_S_F24)
-#define K_S_F25		TERMCAP2KEY(KS_EXTRA, KE_S_F25)
-#define K_S_F26		TERMCAP2KEY(KS_EXTRA, KE_S_F26)
-#define K_S_F27		TERMCAP2KEY(KS_EXTRA, KE_S_F27)
-#define K_S_F28		TERMCAP2KEY(KS_EXTRA, KE_S_F28)
-#define K_S_F29		TERMCAP2KEY(KS_EXTRA, KE_S_F29)
-#define K_S_F30		TERMCAP2KEY(KS_EXTRA, KE_S_F30)
-
-#define K_S_F31		TERMCAP2KEY(KS_EXTRA, KE_S_F31)
-#define K_S_F32		TERMCAP2KEY(KS_EXTRA, KE_S_F32)
-#define K_S_F33		TERMCAP2KEY(KS_EXTRA, KE_S_F33)
-#define K_S_F34		TERMCAP2KEY(KS_EXTRA, KE_S_F34)
-#define K_S_F35		TERMCAP2KEY(KS_EXTRA, KE_S_F35)
-#define K_S_F36		TERMCAP2KEY(KS_EXTRA, KE_S_F36)
-#define K_S_F37		TERMCAP2KEY(KS_EXTRA, KE_S_F37)
+/* K_S_F13 to K_S_F37  are currently not used */
 
 #define K_HELP		TERMCAP2KEY('%', '1')
 #define K_UNDO		TERMCAP2KEY('&', '8')
diff --git a/src/macros.h b/src/macros.h
index 07b02d7..0e258df 100644
--- a/src/macros.h
+++ b/src/macros.h
@@ -214,10 +214,6 @@
 
 #ifdef FEAT_CRYPT
 
-#ifndef __MINGW32__
-# define PWLEN 80
-#endif
-
 /* encode byte c, using temp t.  Warning: c must not have side effects. */
 # define ZENCODE(c, t)  (t = decrypt_byte(), update_keys(c), t^(c))
 
@@ -257,13 +253,13 @@
  * MB_COPY_CHAR(f, t): copy one char from "f" to "t" and advance the pointers.
  */
 #ifdef FEAT_MBYTE
-# define mb_ptr_adv(p) p += has_mbyte ? (*mb_ptr2len_check)(p) : 1
-# define mb_ptr_back(s, p) p -= has_mbyte ? ((*mb_head_off)(s, p - 1) + 1) : 1
+# define mb_ptr_adv(p)	    p += has_mbyte ? (*mb_ptr2len_check)(p) : 1
+# define mb_ptr_back(s, p)  p -= has_mbyte ? ((*mb_head_off)(s, p - 1) + 1) : 1
 # define MB_COPY_CHAR(f, t) if (has_mbyte) mb_copy_char(&f, &t); else *t++ = *f++
-# define MB_CHARLEN(p) mb_charlen(p)
+# define MB_CHARLEN(p)	    (has_mbyte ? mb_charlen(p) : STRLEN(p))
 #else
-# define mb_ptr_adv(p) ++p
-# define mb_ptr_back(s, p) --p
+# define mb_ptr_adv(p)	    ++p
+# define mb_ptr_back(s, p)  --p
 # define MB_COPY_CHAR(f, t) *t++ = *f++
-# define MB_CHARLEN(p) STRLEN(p)
+# define MB_CHARLEN(p)	    STRLEN(p)
 #endif
diff --git a/src/os_win32.h b/src/os_win32.h
index d9aaa6e..b839359 100644
--- a/src/os_win32.h
+++ b/src/os_win32.h
@@ -17,7 +17,6 @@
 
 #define BINARY_FILE_IO
 #define USE_EXE_NAME		/* use argv[0] for $VIM */
-#define NO_COOKED_INPUT		/* mch_inchar() doesn't return whole lines */
 #define SYNC_DUP_CLOSE		/* sync() a file with dup() and close() */
 #define USE_TERM_CONSOLE
 #ifndef HAVE_STRING_H
@@ -146,8 +145,6 @@
 #  define ASSERT(f) assert(f)
 # endif
 
-# define VERIFY(f)		ASSERT(f)
-# define DEBUG_ONLY(f)		(f)
 # define TRACE			Trace
 # define TRACE0(sz)		Trace(_T("%s"), _T(sz))
 # define TRACE1(sz, p1)		Trace(_T(sz), p1)
@@ -163,8 +160,6 @@
 
   /* These macros should all compile away to nothing */
 # define ASSERT(f)		((void)0)
-# define VERIFY(f)		((void)f)
-# define DEBUG_ONLY(f)		((void)0)
 # define TRACE			1 ? (void)0 : printf
 # define TRACE0(sz)
 # define TRACE1(sz, p1)
