CVS update by stephent xemacs/src ...

xemacs-cvs at xemacs.org xemacs-cvs at xemacs.org
Sun Mar 25 11:35:12 EDT 2007


  User: stephent
  Date: 07/03/25 17:35:12

  Modified:    xemacs/src ChangeLog chartab.c
Log:
Olivier's fix for syntax tables. <20070324221053.GA48218 at dspnet.fr.eu.org>

Revision  Changes    Path
1.1050    +6 -0      XEmacs/xemacs/src/ChangeLog

Index: ChangeLog
===================================================================
RCS file: /pack/xemacscvs/XEmacs/xemacs/src/ChangeLog,v
retrieving revision 1.1049
retrieving revision 1.1050
diff -u -p -r1.1049 -r1.1050
--- ChangeLog	2007/02/22 16:53:25	1.1049
+++ ChangeLog	2007/03/25 15:34:59	1.1050
@@ -1,3 +1,9 @@
+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
+
 2007-01-22  Stephen J. Turnbull  <stephen at xemacs.org>
 
 	* eval.c (quote):



1.40      +9 -4      XEmacs/xemacs/src/chartab.c

Index: chartab.c
===================================================================
RCS file: /pack/xemacscvs/XEmacs/xemacs/src/chartab.c,v
retrieving revision 1.39
retrieving revision 1.40
diff -u -p -r1.39 -r1.40
--- chartab.c	2005/12/18 10:59:14	1.39
+++ chartab.c	2007/03/25 15:35:06	1.40
@@ -668,11 +668,12 @@ as CHAR-TABLE.  The values will not them
 
   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 @@ as CHAR-TABLE.  The values will not them
 
 #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-CVS mailing list