emacs-diffs
[Top][All Lists]
Advanced

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

[Emacs-diffs] Changes to emacs/src/fns.c


From: Richard M. Stallman
Subject: [Emacs-diffs] Changes to emacs/src/fns.c
Date: Sat, 17 May 2003 08:45:52 -0400

Index: emacs/src/fns.c
diff -c emacs/src/fns.c:1.336 emacs/src/fns.c:1.337
*** emacs/src/fns.c:1.336       Sun Apr  6 09:31:40 2003
--- emacs/src/fns.c     Sat May 17 08:45:52 2003
***************
*** 2634,2642 ****
     ARG is passed to C_FUNCTION when that is called.  */
  
  void
! map_char_table (c_function, function, subtable, arg, depth, indices)
       void (*c_function) P_ ((Lisp_Object, Lisp_Object, Lisp_Object));
!      Lisp_Object function, subtable, arg, *indices;
       int depth;
  {
    int i, to;
--- 2634,2642 ----
     ARG is passed to C_FUNCTION when that is called.  */
  
  void
! map_char_table (c_function, function, table, subtable, arg, depth, indices)
       void (*c_function) P_ ((Lisp_Object, Lisp_Object, Lisp_Object));
!      Lisp_Object function, table, subtable, arg, *indices;
       int depth;
  {
    int i, to;
***************
*** 2646,2652 ****
        /* At first, handle ASCII and 8-bit European characters.  */
        for (i = 0; i < CHAR_TABLE_SINGLE_BYTE_SLOTS; i++)
        {
!         Lisp_Object elt = XCHAR_TABLE (subtable)->contents[i];
          if (c_function)
            (*c_function) (arg, make_number (i), elt);
          else
--- 2646,2656 ----
        /* At first, handle ASCII and 8-bit European characters.  */
        for (i = 0; i < CHAR_TABLE_SINGLE_BYTE_SLOTS; i++)
        {
!         Lisp_Object elt= XCHAR_TABLE (subtable)->contents[i];
!         if (NILP (elt))
!           elt = XCHAR_TABLE (subtable)->defalt;
!         if (NILP (elt))
!           elt = Faref (subtable, make_number (i));
          if (c_function)
            (*c_function) (arg, make_number (i), elt);
          else
***************
*** 2687,2693 ****
        {
          if (depth >= 3)
            error ("Too deep char table");
!         map_char_table (c_function, function, elt, arg, depth + 1, indices);
        }
        else
        {
--- 2691,2697 ----
        {
          if (depth >= 3)
            error ("Too deep char table");
!         map_char_table (c_function, function, table, elt, arg, depth + 1, 
indices);
        }
        else
        {
***************
*** 2695,2700 ****
--- 2699,2706 ----
  
          if (NILP (elt))
            elt = XCHAR_TABLE (subtable)->defalt;
+         if (NILP  (elt))
+           elt = Faref (table, make_number (i));
          c1 = depth >= 1 ? XFASTINT (indices[1]) : 0;
          c2 = depth >= 2 ? XFASTINT (indices[2]) : 0;
          c = MAKE_CHAR (charset, c1, c2);
***************
*** 2731,2737 ****
       be passed to map_char_table because it returns a Lisp_Object rather
       than returning nothing.
       Casting leads to crashes on some architectures.  -stef  */
!   map_char_table (void_call2, Qnil, char_table, function, 0, indices);
    return Qnil;
  }
  
--- 2737,2743 ----
       be passed to map_char_table because it returns a Lisp_Object rather
       than returning nothing.
       Casting leads to crashes on some architectures.  -stef  */
!   map_char_table (void_call2, Qnil, char_table, char_table, function, 0, 
indices);
    return Qnil;
  }
  




reply via email to

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