* fns.c: Check that character arg fits in 'int'.
authorPaul Eggert <eggert@cs.ucla.edu>
Sat, 18 Jun 2011 16:04:07 +0000 (09:04 -0700)
committerPaul Eggert <eggert@cs.ucla.edu>
Sat, 18 Jun 2011 16:04:07 +0000 (09:04 -0700)
src/ChangeLog
src/fns.c

index ee582c4..4ce871b 100644 (file)
@@ -3,6 +3,7 @@
        * fns.c (Ffillarray): Don't assume bool vector size fits in 'int'.
        Use much-faster test for byte-length change.
        Don't assume string byte-length fits in 'int'.
+       Check that character arg fits in 'int'.
 
        * alloc.c (Fmake_bool_vector): Avoid unnecessary multiplication.
 
index 51b753b..702ecbd 100644 (file)
--- a/src/fns.c
+++ b/src/fns.c
@@ -2141,7 +2141,6 @@ ARRAY is a vector, string, char-table, or bool-vector.  */)
   (Lisp_Object array, Lisp_Object item)
 {
   register EMACS_INT size, idx;
-  int charval;
 
   if (VECTORP (array))
     {
@@ -2161,8 +2160,9 @@ ARRAY is a vector, string, char-table, or bool-vector.  */)
   else if (STRINGP (array))
     {
       register unsigned char *p = SDATA (array);
-      CHECK_NUMBER (item);
-      charval = XINT (item);
+      int charval;
+      CHECK_CHARACTER (item);
+      charval = XFASTINT (item);
       size = SCHARS (array);
       if (STRING_MULTIBYTE (array))
        {