aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKenichi Handa2006-09-22 12:54:38 +0000
committerKenichi Handa2006-09-22 12:54:38 +0000
commit983f6a3da6987ede8d4166cbd5061a2a1235d80a (patch)
tree421ca80ef2923282c300141f50c00492a6f84848
parent7b7d4a7915edf6aabe29e0e0045439b3d8086337 (diff)
downloademacs-983f6a3da6987ede8d4166cbd5061a2a1235d80a.tar.gz
emacs-983f6a3da6987ede8d4166cbd5061a2a1235d80a.zip
(optimize_sub_char_table): Don't optimize a sub-char-table
whose default value is non-nil.
-rw-r--r--src/fns.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/src/fns.c b/src/fns.c
index e769f40cc88..ff945720f4f 100644
--- a/src/fns.c
+++ b/src/fns.c
@@ -2777,7 +2777,8 @@ optimize_sub_char_table (table, chars)
2777 else 2777 else
2778 from = 32, to = 128; 2778 from = 32, to = 128;
2779 2779
2780 if (!SUB_CHAR_TABLE_P (*table)) 2780 if (!SUB_CHAR_TABLE_P (*table)
2781 || ! NILP (XCHAR_TABLE (*table)->defalt))
2781 return; 2782 return;
2782 elt = XCHAR_TABLE (*table)->contents[from++]; 2783 elt = XCHAR_TABLE (*table)->contents[from++];
2783 for (; from < to; from++) 2784 for (; from < to; from++)
@@ -2792,7 +2793,7 @@ DEFUN ("optimize-char-table", Foptimize_char_table, Soptimize_char_table,
2792 Lisp_Object table; 2793 Lisp_Object table;
2793{ 2794{
2794 Lisp_Object elt; 2795 Lisp_Object elt;
2795 int dim; 2796 int dim, chars;
2796 int i, j; 2797 int i, j;
2797 2798
2798 CHECK_CHAR_TABLE (table); 2799 CHECK_CHAR_TABLE (table);
@@ -2803,10 +2804,11 @@ DEFUN ("optimize-char-table", Foptimize_char_table, Soptimize_char_table,
2803 if (!SUB_CHAR_TABLE_P (elt)) 2804 if (!SUB_CHAR_TABLE_P (elt))
2804 continue; 2805 continue;
2805 dim = CHARSET_DIMENSION (i - 128); 2806 dim = CHARSET_DIMENSION (i - 128);
2807 chars = CHARSET_CHARS (i - 128);
2806 if (dim == 2) 2808 if (dim == 2)
2807 for (j = 32; j < SUB_CHAR_TABLE_ORDINARY_SLOTS; j++) 2809 for (j = 32; j < SUB_CHAR_TABLE_ORDINARY_SLOTS; j++)
2808 optimize_sub_char_table (XCHAR_TABLE (elt)->contents + j, dim); 2810 optimize_sub_char_table (XCHAR_TABLE (elt)->contents + j, chars);
2809 optimize_sub_char_table (XCHAR_TABLE (table)->contents + i, dim); 2811 optimize_sub_char_table (XCHAR_TABLE (table)->contents + i, chars);
2810 } 2812 }
2811 return Qnil; 2813 return Qnil;
2812} 2814}