Mercurial > emacs
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];