aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorKenichi Handa1997-02-27 10:45:19 +0000
committerKenichi Handa1997-02-27 10:45:19 +0000
commit8fb379fdac206bcb716c3faa25f7de924806f30d (patch)
tree4ab7ef23581cc423e99c6205f65641aadaa7eb86 /src
parent3046d6fcf7e4e64ed1528eb839edf04aae72b260 (diff)
downloademacs-8fb379fdac206bcb716c3faa25f7de924806f30d.tar.gz
emacs-8fb379fdac206bcb716c3faa25f7de924806f30d.zip
(Faref, Faset): Handle a composite char correctly in char-table.
Diffstat (limited to 'src')
-rw-r--r--src/data.c16
1 files changed, 8 insertions, 8 deletions
diff --git a/src/data.c b/src/data.c
index f5d81d82b3a..4db329233f1 100644
--- a/src/data.c
+++ b/src/data.c
@@ -1567,8 +1567,8 @@ or a byte-code object. IDX starts at 0.")
1567 } 1567 }
1568 else 1568 else
1569 { 1569 {
1570 int idx[4]; /* For charset, code1, code2, and anchor. */ 1570 int idx[3]; /* For charset, code1, and code2. */
1571 int i; 1571 int i, len;
1572 Lisp_Object sub_array; 1572 Lisp_Object sub_array;
1573 1573
1574 /* There's no reason to treat a composite character 1574 /* There's no reason to treat a composite character
@@ -1580,11 +1580,11 @@ or a byte-code object. IDX starts at 0.")
1580 idxval = cmpchar_component (idxval, 0); 1580 idxval = cmpchar_component (idxval, 0);
1581#endif 1581#endif
1582 SPLIT_NON_ASCII_CHAR (idxval, idx[0], idx[1], idx[2]); 1582 SPLIT_NON_ASCII_CHAR (idxval, idx[0], idx[1], idx[2]);
1583 idx[3] = 0; 1583 len = (COMPOSITE_CHAR_P (idxval) || idx[2]) ? 3 : (idx[1] ? 2 : 1);
1584 1584
1585 try_parent_char_table: 1585 try_parent_char_table:
1586 sub_array = array; 1586 sub_array = array;
1587 for (i = 0; idx[i]; i++) 1587 for (i = 0; i < len; i++)
1588 { 1588 {
1589 val = XCHAR_TABLE (sub_array)->contents[idx[i]]; 1589 val = XCHAR_TABLE (sub_array)->contents[idx[i]];
1590 if (NILP (val)) 1590 if (NILP (val))
@@ -1677,14 +1677,14 @@ ARRAY may be a vector or a string. IDX starts at 0.")
1677 XCHAR_TABLE (array)->contents[idxval] = newelt; 1677 XCHAR_TABLE (array)->contents[idxval] = newelt;
1678 else 1678 else
1679 { 1679 {
1680 int idx[4]; /* For charset, code1, code2, and anchor. */ 1680 int idx[3]; /* For charset, code1, and code2. */
1681 int i; 1681 int i, len;
1682 Lisp_Object val; 1682 Lisp_Object val;
1683 1683
1684 SPLIT_NON_ASCII_CHAR (idxval, idx[0], idx[1], idx[2]); 1684 SPLIT_NON_ASCII_CHAR (idxval, idx[0], idx[1], idx[2]);
1685 idx[3] = 0; 1685 len = (COMPOSITE_CHAR_P (idxval) || idx[2]) ? 2 : (idx[1] ? 1 : 0);
1686 1686
1687 for (i = 0; idx[i + 1]; i++) 1687 for (i = 0; i < len; i++)
1688 { 1688 {
1689 val = XCHAR_TABLE (array)->contents[idx[i]]; 1689 val = XCHAR_TABLE (array)->contents[idx[i]];
1690 if (CHAR_TABLE_P (val)) 1690 if (CHAR_TABLE_P (val))