# HG changeset patch # User Kenichi Handa # Date 1075857525 0 # Node ID 9ddd570ce8c778d4f58ac87b0a9ed15ff3d9ba76 # Parent ad0a7541533dd37d89a23aff370f203148af1d85 (Fset_char_table_range): Handle charsets ascii, eight-bit-control, and eight-bit-graphic correctly. diff -r ad0a7541533d -r 9ddd570ce8c7 src/fns.c --- a/src/fns.c Tue Feb 03 23:44:47 2004 +0000 +++ b/src/fns.c Wed Feb 04 01:18:45 2004 +0000 @@ -2512,14 +2512,26 @@ else if (SYMBOLP (range)) { Lisp_Object charset_info; + int charset_id; charset_info = Fget (range, Qcharset); - CHECK_VECTOR (charset_info); - - return Faset (char_table, - make_number (XINT (XVECTOR (charset_info)->contents[0]) - + 128), - value); + if (! VECTORP (charset_info) + || ! NATNUMP (AREF (charset_info, 0)) + || (charset_id = XINT (AREF (charset_info, 0)), + ! CHARSET_DEFINED_P (charset_id))) + error ("Invalid charset: %s", SYMBOL_NAME (range)); + + if (charset_id == CHARSET_ASCII) + for (i = 0; i < 128; i++) + XCHAR_TABLE (char_table)->contents[i] = value; + else if (charset_id == CHARSET_8_BIT_CONTROL) + for (i = 128; i < 160; i++) + XCHAR_TABLE (char_table)->contents[i] = value; + else if (charset_id == CHARSET_8_BIT_GRAPHIC) + for (i = 160; i < 256; i++) + XCHAR_TABLE (char_table)->contents[i] = value; + else + XCHAR_TABLE (char_table)->contents[charset_id + 128] = value; } else if (INTEGERP (range)) Faset (char_table, range, value);