aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorKenichi Handa2004-02-04 01:20:27 +0000
committerKenichi Handa2004-02-04 01:20:27 +0000
commit13c5d120fc89e35407b0092bef93c809a0b715fd (patch)
treedcf3f5c6fba54af1595fb11149afc28e15692d93 /src
parent2883d84228b07da8276569258cee4eafebc10c35 (diff)
downloademacs-13c5d120fc89e35407b0092bef93c809a0b715fd.tar.gz
emacs-13c5d120fc89e35407b0092bef93c809a0b715fd.zip
(Fset_char_table_range): Handle charsets ascii,
eight-bit-control, and eight-bit-graphic correctly.
Diffstat (limited to 'src')
-rw-r--r--src/ChangeLog5
-rw-r--r--src/fns.c24
2 files changed, 23 insertions, 6 deletions
diff --git a/src/ChangeLog b/src/ChangeLog
index 1e44a98d42d..f96f7740548 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,8 @@
12004-02-04 Kenichi Handa <handa@m17n.org>
2
3 * fns.c (Fset_char_table_range): Handle charsets ascii,
4 eight-bit-control, and eight-bit-graphic correctly.
5
12004-02-03 Jason Rumney <jasonr@gnu.org> 62004-02-03 Jason Rumney <jasonr@gnu.org>
2 7
3 * w32select.c (Fw32_set_clipboard_data): Make coding iso2022 safe. 8 * w32select.c (Fw32_set_clipboard_data): Make coding iso2022 safe.
diff --git a/src/fns.c b/src/fns.c
index 493d7ba2897..c9e25ecf547 100644
--- a/src/fns.c
+++ b/src/fns.c
@@ -2512,14 +2512,26 @@ character set, or a character code. Return VALUE. */)
2512 else if (SYMBOLP (range)) 2512 else if (SYMBOLP (range))
2513 { 2513 {
2514 Lisp_Object charset_info; 2514 Lisp_Object charset_info;
2515 int charset_id;
2515 2516
2516 charset_info = Fget (range, Qcharset); 2517 charset_info = Fget (range, Qcharset);
2517 CHECK_VECTOR (charset_info); 2518 if (! VECTORP (charset_info)
2518 2519 || ! NATNUMP (AREF (charset_info, 0))
2519 return Faset (char_table, 2520 || (charset_id = XINT (AREF (charset_info, 0)),
2520 make_number (XINT (XVECTOR (charset_info)->contents[0]) 2521 ! CHARSET_DEFINED_P (charset_id)))
2521 + 128), 2522 error ("Invalid charset: %s", SYMBOL_NAME (range));
2522 value); 2523
2524 if (charset_id == CHARSET_ASCII)
2525 for (i = 0; i < 128; i++)
2526 XCHAR_TABLE (char_table)->contents[i] = value;
2527 else if (charset_id == CHARSET_8_BIT_CONTROL)
2528 for (i = 128; i < 160; i++)
2529 XCHAR_TABLE (char_table)->contents[i] = value;
2530 else if (charset_id == CHARSET_8_BIT_GRAPHIC)
2531 for (i = 160; i < 256; i++)
2532 XCHAR_TABLE (char_table)->contents[i] = value;
2533 else
2534 XCHAR_TABLE (char_table)->contents[charset_id + 128] = value;
2523 } 2535 }
2524 else if (INTEGERP (range)) 2536 else if (INTEGERP (range))
2525 Faset (char_table, range, value); 2537 Faset (char_table, range, value);