diff --git a/runtime/doc/editing.txt b/runtime/doc/editing.txt
index 32848ac..b4cdc48 100644
--- a/runtime/doc/editing.txt
+++ b/runtime/doc/editing.txt
@@ -1376,6 +1376,9 @@
 don't write the file encrypted!  You need to rebuild the Vim binary to fix
 this.
 
+*E831* This is an internal error, "cannot happen".  If you can reproduc it,
+please report to the developers.
+
 When reading a file that has been encrypted and the 'key' option is not empty,
 it will be used for decryption.  If the value is empty, you will be prompted
 to enter the key.  If you don't enter a key, or you enter the wrong key, the
diff --git a/runtime/doc/tags b/runtime/doc/tags
index 18cd16b..ec4c8ab 100644
--- a/runtime/doc/tags
+++ b/runtime/doc/tags
@@ -4183,10 +4183,14 @@
 E823	undo.txt	/*E823*
 E824	undo.txt	/*E824*
 E825	undo.txt	/*E825*
+E826	undo.txt	/*E826*
+E827	undo.txt	/*E827*
 E828	undo.txt	/*E828*
 E829	undo.txt	/*E829*
 E83	message.txt	/*E83*
 E830	undo.txt	/*E830*
+E831	editing.txt	/*E831*
+E832	undo.txt	/*E832*
 E84	windows.txt	/*E84*
 E85	options.txt	/*E85*
 E86	windows.txt	/*E86*
diff --git a/runtime/doc/todo.txt b/runtime/doc/todo.txt
index 12c6b68..549dcff 100644
--- a/runtime/doc/todo.txt
+++ b/runtime/doc/todo.txt
@@ -30,6 +30,8 @@
 							*known-bugs*
 -------------------- Known bugs and current work -----------------------
 
+gtk_selection_clear_targets not available in GTK1 (Patrick Texier)
+
 Cursor positioning wrong with 0x200e character. (John Becket, 2010 May 6)
 
 E315 when trying to change a file in FileChangedRO autocommand event.
diff --git a/runtime/doc/undo.txt b/runtime/doc/undo.txt
index 6e2308f..1195a05 100644
--- a/runtime/doc/undo.txt
+++ b/runtime/doc/undo.txt
@@ -285,6 +285,13 @@
 	the undo file cannot be used, it would corrupt the text.  This also
 	happens when 'encoding' differs from when the undo file was written.
 *E825*  The undo file does not contain valid contents and cannot be used.
+*E826*  The undo file is encrypted but decryption failed.
+*E827*  The undo file is encrypted but this version of Vim does not support
+	encryption.  Open the file with another Vim.
+*E832*  The undo file is encrypted but 'key' is not set, the text file is not
+	encrypted.  This would happen if the text file was written by Vim
+	encrypted at first, and later overwritten by not encrypted text.
+	You probably want to delete this undo file.
 "Not reading undo file, owner differs"
 	The undo file is owned by someone else than the owner of the text
 	file.  For safety the undo file is not used.
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
     }
