emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] Changes to emacs/src/chartab.c,v


From: Kenichi Handa
Subject: [Emacs-diffs] Changes to emacs/src/chartab.c,v
Date: Fri, 29 Aug 2008 07:53:12 +0000

CVSROOT:        /cvsroot/emacs
Module name:    emacs
Changes by:     Kenichi Handa <handa>   08/08/29 07:53:12

Index: chartab.c
===================================================================
RCS file: /cvsroot/emacs/emacs/src/chartab.c,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -b -r1.7 -r1.8
--- chartab.c   30 May 2008 21:07:50 -0000      1.7
+++ chartab.c   29 Aug 2008 07:53:11 -0000      1.8
@@ -660,28 +660,27 @@
   struct Lisp_Sub_Char_Table *tbl = XSUB_CHAR_TABLE (table);
   int depth = XINT (tbl->depth);
   Lisp_Object elt, this;
-  int i;
+  int i, optimizable;
 
   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);
-  if (SUB_CHAR_TABLE_P (elt))
-    return table;
+  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);
-      if (SUB_CHAR_TABLE_P (this)
-         || (NILP (test) ? NILP (Fequal (this, elt)) /* defaults to `equal'. */
+      if (optimizable
+         && (NILP (test) ? NILP (Fequal (this, elt)) /* defaults to `equal'. */
              : EQ (test, Qeq) ? !EQ (this, elt)      /* Optimize `eq' case.  */
              : NILP (call2 (test, this, elt))))
-       break;
+       optimizable = 0;
     }
 
-  return (i < chartab_size[depth] ? table : elt);
+  return (optimizable ? elt : table);
 }
 
 DEFUN ("optimize-char-table", Foptimize_char_table, Soptimize_char_table,




reply via email to

[Prev in Thread] Current Thread [Next in Thread]