]> git.eshelyaron.com Git - emacs.git/commitdiff
(Fchar_table_range, Fset_char_table_range):
authorRichard M. Stallman <rms@gnu.org>
Fri, 30 May 1997 05:11:26 +0000 (05:11 +0000)
committerRichard M. Stallman <rms@gnu.org>
Fri, 30 May 1997 05:11:26 +0000 (05:11 +0000)
Make one-element vector work for RANGE.

src/fns.c

index b912071a5f8d280cc77665056e471fd1865b724d..69bcb6f7d86ed895c09ca1c4f20b934c9849b50d 100644 (file)
--- a/src/fns.c
+++ b/src/fns.c
@@ -1315,12 +1315,17 @@ or a character code.")
     return Faref (char_table, range);
   else if (VECTORP (range))
     {
-      int size = XVECTOR (range)->size;
-      Lisp_Object *val = XVECTOR (range)->contents;
-      Lisp_Object ch = Fmake_char_internal (size <= 0 ? Qnil : val[0],
-                                           size <= 1 ? Qnil : val[1],
-                                           size <= 2 ? Qnil : val[2]);
-      return Faref (char_table, ch);
+      if (XVECTOR (range)->size == 1)
+       return Faref (char_table, XVECTOR (range)->contents[0]);
+      else
+       {
+         int size = XVECTOR (range)->size;
+         Lisp_Object *val = XVECTOR (range)->contents;
+         Lisp_Object ch = Fmake_char_internal (size <= 0 ? Qnil : val[0],
+                                               size <= 1 ? Qnil : val[1],
+                                               size <= 2 ? Qnil : val[2]);
+         return Faref (char_table, ch);
+       }
     }
   else
     error ("Invalid RANGE argument to `char-table-range'");
@@ -1348,12 +1353,17 @@ or a character code.")
     Faset (char_table, range, value);
   else if (VECTORP (range))
     {
-      int size = XVECTOR (range)->size;
-      Lisp_Object *val = XVECTOR (range)->contents;
-      Lisp_Object ch = Fmake_char_internal (size <= 0 ? Qnil : val[0],
-                                           size <= 1 ? Qnil : val[1],
-                                           size <= 2 ? Qnil : val[2]);
-      return Faset (char_table, ch, value);
+      if (XVECTOR (range)->size == 1)
+       return Faset (char_table, XVECTOR (range)->contents[0], value);
+      else
+       {
+         int size = XVECTOR (range)->size;
+         Lisp_Object *val = XVECTOR (range)->contents;
+         Lisp_Object ch = Fmake_char_internal (size <= 0 ? Qnil : val[0],
+                                               size <= 1 ? Qnil : val[1],
+                                               size <= 2 ? Qnil : val[2]);
+         return Faset (char_table, ch, value);
+       }
     }
   else
     error ("Invalid RANGE argument to `set-char-table-range'");