diff src/mule-charset.c @ 359:8e84bee8ddd0 r21-1-9

Import from CVS: tag r21-1-9
author cvs
date Mon, 13 Aug 2007 10:57:55 +0200
parents 7c94d56991e1
children a4f53d9b3154
line wrap: on
line diff
--- a/src/mule-charset.c	Mon Aug 13 10:57:07 2007 +0200
+++ b/src/mule-charset.c	Mon Aug 13 10:57:55 2007 +0200
@@ -251,15 +251,19 @@
   if (f1 == 0)
     {
       Lisp_Object charset;
-
+      /* 0x8B checking is here to avoid the gap between
+	 LEADING_BYTE_LATIN_JISX0201 and
+	 LEADING_BYTE_CYRILLIC_ISO8859_5. See mule-charset.h */
       if (f2 < MIN_CHAR_FIELD2_OFFICIAL ||
+	  f2 == (0x8B - FIELD2_TO_OFFICIAL_LEADING_BYTE) ||
 	  (f2 > MAX_CHAR_FIELD2_OFFICIAL && f2 < MIN_CHAR_FIELD2_PRIVATE) ||
 	   f2 > MAX_CHAR_FIELD2_PRIVATE)
 	return 0;
       if (f3 < 0x20)
 	return 0;
 
-      if (f3 != 0x20 && f3 != 0x7F)
+      if (f3 != 0x20 && f3 != 0x7F && !(f2 >= MIN_CHAR_FIELD2_PRIVATE &&
+					f2 <= MAX_CHAR_FIELD2_PRIVATE))
 	return 1;
 
       /*
@@ -268,6 +272,8 @@
 	 FIELD2_TO_PRIVATE_LEADING_BYTE are the same.
 	 */
       charset = CHARSET_BY_LEADING_BYTE (f2 + FIELD2_TO_OFFICIAL_LEADING_BYTE);
+      if (EQ (charset, Qnil))
+	return 0;
       return (XCHARSET_CHARS (charset) == 96);
     }
   else
@@ -293,7 +299,8 @@
 	}
 #endif /* ENABLE_COMPOSITE_CHARS */
 
-      if (f2 != 0x20 && f2 != 0x7F && f3 != 0x20 && f3 != 0x7F)
+      if (f2 != 0x20 && f2 != 0x7F && f3 != 0x20 && f3 != 0x7F
+	  && !(f1 >= MIN_CHAR_FIELD1_PRIVATE && f1 <= MAX_CHAR_FIELD1_PRIVATE))
 	return 1;
 
       if (f1 <= MAX_CHAR_FIELD1_OFFICIAL)
@@ -303,6 +310,8 @@
 	charset =
 	  CHARSET_BY_LEADING_BYTE (f1 + FIELD1_TO_PRIVATE_LEADING_BYTE);
 
+      if (EQ (charset, Qnil))
+	return 0;
       return (XCHARSET_CHARS (charset) == 96);
     }
 }