]> git.eshelyaron.com Git - emacs.git/commitdiff
* chartab.c (Fchar_table_range): Use CHARACTERP to check range.
authorPaul Eggert <eggert@cs.ucla.edu>
Mon, 13 Jun 2011 01:38:25 +0000 (18:38 -0700)
committerPaul Eggert <eggert@cs.ucla.edu>
Mon, 13 Jun 2011 01:38:25 +0000 (18:38 -0700)
Otherwise, an out-of-range integer could cause undefined behavior
on a 64-bit host.

src/ChangeLog
src/chartab.c

index 8f98b251234180071c65b6ede95be1bcc73cdbc8..db01d9f291f79d0dd1bb50d637b743726f16cad8 100644 (file)
@@ -1,5 +1,9 @@
 2011-06-13  Paul Eggert  <eggert@cs.ucla.edu>
 
+       * chartab.c (Fchar_table_range): Use CHARACTERP to check range.
+       Otherwise, an out-of-range integer could cause undefined behavior
+       on a 64-bit host.
+
        * composite.c: Use int, not EMACS_INT, for characters.
        (fill_gstring_body, composition_compute_stop_pos): Use int, not
        EMACS_INT, for values that are known to be in character range.
index 2f40ceee6ce06ce632da20c98d2eb8eb9d224f86..ed5b238646e6ba9987237bef9b7f949a0e973491 100644 (file)
@@ -524,15 +524,15 @@ a cons of character codes (for characters in the range), or a character code.  *
 
   if (EQ (range, Qnil))
     val = XCHAR_TABLE (char_table)->defalt;
-  else if (INTEGERP (range))
-    val = CHAR_TABLE_REF (char_table, XINT (range));
+  else if (CHARACTERP (range))
+    val = CHAR_TABLE_REF (char_table, XFASTINT (range));
   else if (CONSP (range))
     {
       int from, to;
 
       CHECK_CHARACTER_CAR (range);
       CHECK_CHARACTER_CDR (range);
-      val = char_table_ref_and_range (char_table, XINT (XCAR (range)),
+      val = char_table_ref_and_range (char_table, XFASTINT (XCAR (range)),
                                      &from, &to);
       /* Not yet implemented. */
     }