changeset 2251:646d34788036 vim73

Fix a few compiler warnings. Fix crash with encrypted undo file.
author Bram Moolenaar <bram@vim.org>
date Sun, 06 Jun 2010 14:20:26 +0200
parents 1bac28a53fae
children a0b5918c33cc
files runtime/doc/editing.txt runtime/doc/tags runtime/doc/todo.txt runtime/doc/undo.txt src/blowfish.c src/feature.h src/gui_beval.c src/menu.c src/syntax.c src/undo.c
diffstat 10 files changed, 37 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/runtime/doc/editing.txt
+++ b/runtime/doc/editing.txt
@@ -1376,6 +1376,9 @@ check if the encryption works as expecte
 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
--- a/runtime/doc/tags
+++ b/runtime/doc/tags
@@ -4183,10 +4183,14 @@ E822	undo.txt	/*E822*
 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*
--- a/runtime/doc/todo.txt
+++ b/runtime/doc/todo.txt
@@ -30,6 +30,8 @@ be worked on, but only if you sponsor Vi
 							*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.
--- a/runtime/doc/undo.txt
+++ b/runtime/doc/undo.txt
@@ -285,6 +285,13 @@ Reading an existing undo file may fail f
 	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.
--- a/src/blowfish.c
+++ b/src/blowfish.c
@@ -413,6 +413,11 @@ bf_key_init(password)
 
     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];
--- 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
--- a/src/gui_beval.c
+++ b/src/gui_beval.c
@@ -20,6 +20,7 @@ general_beval_cb(beval, state)
     BalloonEval *beval;
     int		state UNUSED;
 {
+#ifdef FEAT_EVAL
     win_T	*wp;
     int		col;
     int		use_sandbox;
@@ -29,8 +30,9 @@ general_beval_cb(beval, state)
     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;
 
--- a/src/menu.c
+++ b/src/menu.c
@@ -56,10 +56,10 @@ static char_u *menu_skip_part __ARGS((ch
 #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 @@ menutrans_lookup(name, len)
 
     return NULL;
 }
-#endif /* FEAT_MULTI_LANG */
 
 /*
  * Unescape the name in the translate dictionary table.
@@ -2540,6 +2539,7 @@ menu_unescape_name(name)
 	if (*p == '\\')
 	    STRMOVE(p, p + 1);
 }
+#endif /* FEAT_MULTI_LANG */
 
 /*
  * Isolate the menu name.
--- a/src/syntax.c
+++ b/src/syntax.c
@@ -235,7 +235,7 @@ static char_u **syn_cmdlinep;
 
 /*
  * 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 @@ get_syn_options(arg, opt, conceal_char)
 	    }
 	    else
 #endif
+	    {
 #ifdef FEAT_CONCEAL
 		*conceal_char = arg[6];
 #else
 		;
 #endif
+	    }
 	    arg = skipwhite(arg + 7);
 	}
 	else
--- a/src/undo.c
+++ b/src/undo.c
@@ -1503,13 +1503,19 @@ u_read_undo(name, hash, orig_name)
     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
     }