diff --git a/src/blowfish.c b/src/blowfish.c
index 1ab8eca..d47f463 100644
--- a/src/blowfish.c
+++ b/src/blowfish.c
@@ -413,6 +413,11 @@
 
     key = sha256_key(password);
     keylen = (int)STRLEN(key);
+    if (keylen == 0)
+    {
+	EMSG(_("E831: bf_key_init() called with empty password"));
+	return;
+    }
     for (i = 0; i < 256; ++i)
     {
 	sbx[0][i] = sbi[0][i];
diff --git a/src/feature.h b/src/feature.h
index 5bca7c7..7a38b85 100644
--- a/src/feature.h
+++ b/src/feature.h
@@ -127,7 +127,7 @@
 #endif
 
 /*
- * Message history is fixed at 100 message, 20 for the tiny version.
+ * Message history is fixed at 200 message, 20 for the tiny version.
  */
 #ifdef FEAT_SMALL
 # define MAX_MSG_HIST_LEN 200
diff --git a/src/gui_beval.c b/src/gui_beval.c
index 123b6fd..90bef8b 100644
--- a/src/gui_beval.c
+++ b/src/gui_beval.c
@@ -20,6 +20,7 @@
     BalloonEval *beval;
     int		state UNUSED;
 {
+#ifdef FEAT_EVAL
     win_T	*wp;
     int		col;
     int		use_sandbox;
@@ -29,8 +30,9 @@
     long	winnr = 0;
     char_u	*bexpr;
     buf_T	*save_curbuf;
-#ifdef FEAT_WINDOWS
+# ifdef FEAT_WINDOWS
     win_T	*cw;
+# endif
 #endif
     static int	recursive = FALSE;
 
diff --git a/src/menu.c b/src/menu.c
index f01a34e..3ab957c 100644
--- a/src/menu.c
+++ b/src/menu.c
@@ -56,10 +56,10 @@
 #endif
 #ifdef FEAT_MULTI_LANG
 static char_u *menutrans_lookup __ARGS((char_u *name, int len));
+static void menu_unescape_name  __ARGS((char_u	*p));
 #endif
 
 static char_u *menu_translate_tab_and_shift __ARGS((char_u *arg_start));
-static void menu_unescape_name  __ARGS((char_u	*p));
 
 /* The character for each menu mode */
 static char_u	menu_mode_chars[] = {'n', 'v', 's', 'o', 'i', 'c', 't'};
@@ -2525,7 +2525,6 @@
 
     return NULL;
 }
-#endif /* FEAT_MULTI_LANG */
 
 /*
  * Unescape the name in the translate dictionary table.
@@ -2540,6 +2539,7 @@
 	if (*p == '\\')
 	    STRMOVE(p, p + 1);
 }
+#endif /* FEAT_MULTI_LANG */
 
 /*
  * Isolate the menu name.
diff --git a/src/syntax.c b/src/syntax.c
index c19c5d9..370bc76 100644
--- a/src/syntax.c
+++ b/src/syntax.c
@@ -235,7 +235,7 @@
 
 /*
  * Another Annoying Hack(TM):  To prevent rules from other ":syn include"'d
- * files from from leaking into ALLBUT lists, we assign a unique ID to the
+ * files from leaking into ALLBUT lists, we assign a unique ID to the
  * rules in each ":syn include"'d file.
  */
 static int current_syn_inc_tag = 0;
@@ -4500,11 +4500,13 @@
 	    }
 	    else
 #endif
+	    {
 #ifdef FEAT_CONCEAL
 		*conceal_char = arg[6];
 #else
 		;
 #endif
+	    }
 	    arg = skipwhite(arg + 7);
 	}
 	else
diff --git a/src/undo.c b/src/undo.c
index 232dbac..22d07d5 100644
--- a/src/undo.c
+++ b/src/undo.c
@@ -1503,13 +1503,19 @@
     if (version == UF_VERSION_CRYPT)
     {
 #ifdef FEAT_CRYPT
+	if (*curbuf->b_p_key == NUL)
+	{
+	    EMSG2(_("E832: Non-encrypted file has encrypted undo file: %s"),
+								   file_name);
+	    goto error;
+	}
 	if (prepare_crypt_read(fp) == FAIL)
 	{
 	    EMSG2(_("E826: Undo file decryption failed: %s"), file_name);
 	    goto error;
 	}
 #else
-        EMSG2(_("E826: Undo file is encrypted: %s"), file_name);
+        EMSG2(_("E827: Undo file is encrypted: %s"), file_name);
         goto error;
 #endif
     }
