changeset 2140:12aba62fa7c6 v7.2.422

updated for version 7.2.422 Problem: May get E763 when using spell dictionaries. Solution: Avoid utf-8 case folded character to be truncated to 8 bits and differ from latin1. (Dominique Pelle)
author Bram Moolenaar <bram@zimbu.org>
date Thu, 13 May 2010 17:46:58 +0200
parents 35effbd07a25
children e10d3c073449
files src/spell.c src/version.c
diffstat 2 files changed, 10 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/src/spell.c
+++ b/src/spell.c
@@ -9780,10 +9780,16 @@ init_spell_chartab()
     {
 	for (i = 128; i < 256; ++i)
 	{
+	    int f = utf_fold(i);
+	    int u = utf_toupper(i);
+
 	    spelltab.st_isu[i] = utf_isupper(i);
 	    spelltab.st_isw[i] = spelltab.st_isu[i] || utf_islower(i);
-	    spelltab.st_fold[i] = utf_fold(i);
-	    spelltab.st_upper[i] = utf_toupper(i);
+	    /* The folded/upper-cased value is different between latin1 and
+	     * utf8 for 0xb5, causing E763 for no good reason.  Use the latin1
+	     * value for utf-8 to avoid this. */
+	    spelltab.st_fold[i] = (f < 256) ? f : i;
+	    spelltab.st_upper[i] = (u < 256) ? u : i;
 	}
     }
     else
--- a/src/version.c
+++ b/src/version.c
@@ -682,6 +682,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    422,
+/**/
     421,
 /**/
     420,