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.
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)));
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);
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];