Fix copy-char-table on syntax tables
Olivier Galibert
galibert at pobox.com
Sat Mar 24 18:10:53 EDT 2007
Somebody please commit it, I changed ssh key recently (to go from ssh1
to ssh2) and haven't bothered Stephen with it yet.
OG.
2007-03-24 Olivier Galibert <galibert at pobox.com>
* chartab.c (Fcopy_char_table): Simplify the mirror table
handling: never copy a mirror table, just make a new one and mark
it dirty. Fixes http://article.gmane.org/gmane.emacs.xemacs.beta/17353
-------------- next part --------------
Index: src/chartab.c
===================================================================
RCS file: /pack/xemacscvs/XEmacs/xemacs/src/chartab.c,v
retrieving revision 1.39
diff -u -r1.39 chartab.c
--- src/chartab.c 2005/12/18 10:59:14 1.39
+++ src/chartab.c 2007/03/24 22:08:55
@@ -668,11 +668,12 @@
CHECK_CHAR_TABLE (char_table);
ct = XCHAR_TABLE (char_table);
+ assert(!ct->mirror_table_p);
ctnew = ALLOC_LCRECORD_TYPE (Lisp_Char_Table, &lrecord_char_table);
ctnew->type = ct->type;
ctnew->parent = ct->parent;
ctnew->default_ = ct->default_;
- ctnew->mirror_table_p = ct->mirror_table_p;
+ ctnew->mirror_table_p = 0;
obj = wrap_char_table (ctnew);
for (i = 0; i < NUM_ASCII_CHARS; i++)
@@ -697,13 +698,17 @@
#endif /* MULE */
- if (!ct->mirror_table_p && CHAR_TABLEP (ct->mirror_table))
+ if (ct->mirror_table != Qnil)
{
- ctnew->mirror_table = Fcopy_char_table (ct->mirror_table);
+ ctnew->mirror_table = Fmake_char_table (Qgeneric);
+ set_char_table_default (ctnew->mirror_table, make_int (Sword));
XCHAR_TABLE (ctnew->mirror_table)->mirror_table = obj;
+ XCHAR_TABLE (ctnew->mirror_table)->mirror_table_p = 1;
+ XCHAR_TABLE (ctnew->mirror_table)->dirty = 1;
}
else
- ctnew->mirror_table = ct->mirror_table;
+ ctnew->mirror_table = Qnil;
+
ctnew->next_table = Qnil;
if (ctnew->type == CHAR_TABLE_TYPE_SYNTAX)
{
More information about the XEmacs-Patches
mailing list