diff options
| author | Kenichi Handa | 2006-09-22 12:54:38 +0000 |
|---|---|---|
| committer | Kenichi Handa | 2006-09-22 12:54:38 +0000 |
| commit | 983f6a3da6987ede8d4166cbd5061a2a1235d80a (patch) | |
| tree | 421ca80ef2923282c300141f50c00492a6f84848 | |
| parent | 7b7d4a7915edf6aabe29e0e0045439b3d8086337 (diff) | |
| download | emacs-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.c | 10 |
1 files changed, 6 insertions, 4 deletions
| @@ -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 | } |