diff src/fns.c @ 18000:2873e0dabbc1

(map_char_table): For sub char-table, index should be start from 0 (not from 32) considering a composite character. (Fmap_char_table): Doc-string adjusted. The variable indices is declared as an array of Lisp_Object.
author Kenichi Handa <handa@m17n.org>
date Wed, 28 May 1997 04:36:22 +0000
parents 7e6a77408020
children edf54f605b36
line wrap: on
line diff
--- a/src/fns.c	Wed May 28 04:36:21 1997 +0000
+++ b/src/fns.c	Wed May 28 04:36:22 1997 +0000
@@ -1439,11 +1439,11 @@
     }
   else
     {
-      i = 32;
+      i = 0;
       to = SUB_CHAR_TABLE_ORDINARY_SLOTS;
     }
 
-  for (i; i < to; i++)
+  for (; i < to; i++)
     {
       Lisp_Object elt = XCHAR_TABLE (subtable)->contents[i];
 
@@ -1453,8 +1453,7 @@
 	{
 	  if (depth >= 3)
 	    error ("Too deep char table");
-	  map_char_table (c_function, function, elt, arg,
-			  depth + 1, indices);
+	  map_char_table (c_function, function, elt, arg, depth + 1, indices);
 	}
       else
 	{
@@ -1476,15 +1475,16 @@
 
 DEFUN ("map-char-table", Fmap_char_table, Smap_char_table,
   2, 2, 0,
-  "Call FUNCTION for each range of like characters in CHAR-TABLE.\n\
+  "Call FUNCTION for each (normal and generic) characters in CHAR-TABLE.\n\
 FUNCTION is called with two arguments--a key and a value.\n\
-The key is always a possible RANGE argument to `set-char-table-range'.")
+The key is always a possible IDX argument to `aref'.")
   (function, char_table)
      Lisp_Object function, char_table;
 {
-  Lisp_Object keyvec;
   /* The depth of char table is at most 3. */
-  Lisp_Object *indices = (Lisp_Object *) alloca (3 * sizeof (Lisp_Object));
+  Lisp_Object indices[3];
+
+  CHECK_CHAR_TABLE (char_table, 1);
 
   map_char_table (NULL, function, char_table, char_table, 0, indices);
   return Qnil;