changeset 89648:d5641a606e08

(Fdefine_coding_system_internal): Fix checking of ascii compatibility.
author Kenichi Handa <handa@m17n.org>
date Sun, 23 Nov 2003 02:17:20 +0000
parents b1e7c4bffed1
children e28cf34dc47f
files src/coding.c
diffstat 1 files changed, 7 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/src/coding.c	Sat Nov 22 11:46:03 2003 +0000
+++ b/src/coding.c	Sun Nov 23 02:17:20 2003 +0000
@@ -8107,7 +8107,6 @@
 
   if (EQ (coding_type, Qcharset))
     {
-      Lisp_Object list;
       /* Generate a lisp vector of 256 elements.  Each element is nil,
 	 integer, or a list of charset IDs.
 
@@ -8119,8 +8118,10 @@
 
 	 If Nth element is a list of charset IDs, N is the first byte
 	 of one of them.  The list is sorted by dimensions of the
-	 charsets.  A charset of smaller dimension comes firtst.
-      */
+	 charsets.  A charset of smaller dimension comes firtst. */
+      Lisp_Object list;
+      int maybe_ascii_compatible = 1;
+
       for (list = Qnil, tail = charset_list; CONSP (tail); tail = XCDR (tail))
 	{
 	  struct charset *charset = CHARSET_FROM_ID (XFASTINT (XCAR (tail)));
@@ -8130,6 +8131,7 @@
 	      val = CHARSET_SUPERSET (charset);
 	      for (; CONSP (val); val = XCDR (val))
 		list = Fcons (XCAR (XCAR (val)), list);
+	      maybe_ascii_compatible = 0;
 	    }
 	  else
 	    list = Fcons (XCAR (tail), list);
@@ -8143,7 +8145,8 @@
 	  int dim = CHARSET_DIMENSION (charset);
 	  int idx = (dim - 1) * 4;
 
-	  if (CHARSET_ASCII_COMPATIBLE_P (charset))
+	  if (CHARSET_ASCII_COMPATIBLE_P (charset)
+	      && maybe_ascii_compatible)
 	    CODING_ATTR_ASCII_COMPAT (attrs) = Qt;
 
 	  for (i = charset->code_space[idx];