Fix previous char table change.

* lisp.h (CHAR_TABLE_SET): Use sub_char_table_set_contents.
* chartab.c (optimize_sub_char_table): Likewise.
This commit is contained in:
Dmitry Antipov 2012-08-16 11:26:18 +04:00
parent a2d1936838
commit 2751c80fd3
3 changed files with 15 additions and 5 deletions

View file

@ -1,3 +1,9 @@
2012-08-16 Dmitry Antipov <dmantipov@yandex.ru>
Fix previous char table change.
* lisp.h (CHAR_TABLE_SET): Use sub_char_table_set_contents.
* chartab.c (optimize_sub_char_table): Likewise.
2012-08-16 Chong Yidong <cyd@gnu.org>
* gtkutil.c (xg_get_font): Demand an Xft font (Bug#3228).

View file

@ -693,15 +693,19 @@ optimize_sub_char_table (Lisp_Object table, Lisp_Object test)
elt = XSUB_CHAR_TABLE (table)->contents[0];
if (SUB_CHAR_TABLE_P (elt))
elt = XSUB_CHAR_TABLE (table)->contents[0]
= optimize_sub_char_table (elt, test);
{
elt = optimize_sub_char_table (elt, test);
sub_char_table_set_contents (table, 0, elt);
}
optimizable = SUB_CHAR_TABLE_P (elt) ? 0 : 1;
for (i = 1; i < chartab_size[depth]; i++)
{
this = XSUB_CHAR_TABLE (table)->contents[i];
if (SUB_CHAR_TABLE_P (this))
this = XSUB_CHAR_TABLE (table)->contents[i]
= optimize_sub_char_table (this, test);
{
this = optimize_sub_char_table (this, test);
sub_char_table_set_contents (table, i, this);
}
if (optimizable
&& (NILP (test) ? NILP (Fequal (this, elt)) /* defaults to `equal'. */
: EQ (test, Qeq) ? !EQ (this, elt) /* Optimize `eq' case. */

View file

@ -923,7 +923,7 @@ enum
8-bit European characters. Do not check validity of CT. */
#define CHAR_TABLE_SET(CT, IDX, VAL) \
(ASCII_CHAR_P (IDX) && SUB_CHAR_TABLE_P (XCHAR_TABLE (CT)->ascii) \
? XSUB_CHAR_TABLE (XCHAR_TABLE (CT)->ascii)->contents[IDX] = VAL \
? sub_char_table_set_contents (XCHAR_TABLE (CT)->ascii, IDX, VAL) \
: char_table_set (CT, IDX, VAL))
enum CHARTAB_SIZE_BITS