diff options
| author | Paul Eggert | 2011-06-12 18:38:25 -0700 |
|---|---|---|
| committer | Paul Eggert | 2011-06-12 18:38:25 -0700 |
| commit | 8fd02eb7d30a7e0e98cc863e0f3cb81a954fe8a9 (patch) | |
| tree | e90fd66b1c8fd1620d65b758d541dd648fbe3bc9 /src | |
| parent | f8c86b69a8489f33709de6b869be369a34d5adb0 (diff) | |
| download | emacs-8fd02eb7d30a7e0e98cc863e0f3cb81a954fe8a9.tar.gz emacs-8fd02eb7d30a7e0e98cc863e0f3cb81a954fe8a9.zip | |
* 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.
Diffstat (limited to 'src')
| -rw-r--r-- | src/ChangeLog | 4 | ||||
| -rw-r--r-- | src/chartab.c | 6 |
2 files changed, 7 insertions, 3 deletions
diff --git a/src/ChangeLog b/src/ChangeLog index 8f98b251234..db01d9f291f 100644 --- a/src/ChangeLog +++ b/src/ChangeLog | |||
| @@ -1,5 +1,9 @@ | |||
| 1 | 2011-06-13 Paul Eggert <eggert@cs.ucla.edu> | 1 | 2011-06-13 Paul Eggert <eggert@cs.ucla.edu> |
| 2 | 2 | ||
| 3 | * chartab.c (Fchar_table_range): Use CHARACTERP to check range. | ||
| 4 | Otherwise, an out-of-range integer could cause undefined behavior | ||
| 5 | on a 64-bit host. | ||
| 6 | |||
| 3 | * composite.c: Use int, not EMACS_INT, for characters. | 7 | * composite.c: Use int, not EMACS_INT, for characters. |
| 4 | (fill_gstring_body, composition_compute_stop_pos): Use int, not | 8 | (fill_gstring_body, composition_compute_stop_pos): Use int, not |
| 5 | EMACS_INT, for values that are known to be in character range. | 9 | EMACS_INT, for values that are known to be in character range. |
diff --git a/src/chartab.c b/src/chartab.c index 2f40ceee6ce..ed5b238646e 100644 --- a/src/chartab.c +++ b/src/chartab.c | |||
| @@ -524,15 +524,15 @@ a cons of character codes (for characters in the range), or a character code. * | |||
| 524 | 524 | ||
| 525 | if (EQ (range, Qnil)) | 525 | if (EQ (range, Qnil)) |
| 526 | val = XCHAR_TABLE (char_table)->defalt; | 526 | val = XCHAR_TABLE (char_table)->defalt; |
| 527 | else if (INTEGERP (range)) | 527 | else if (CHARACTERP (range)) |
| 528 | val = CHAR_TABLE_REF (char_table, XINT (range)); | 528 | val = CHAR_TABLE_REF (char_table, XFASTINT (range)); |
| 529 | else if (CONSP (range)) | 529 | else if (CONSP (range)) |
| 530 | { | 530 | { |
| 531 | int from, to; | 531 | int from, to; |
| 532 | 532 | ||
| 533 | CHECK_CHARACTER_CAR (range); | 533 | CHECK_CHARACTER_CAR (range); |
| 534 | CHECK_CHARACTER_CDR (range); | 534 | CHECK_CHARACTER_CDR (range); |
| 535 | val = char_table_ref_and_range (char_table, XINT (XCAR (range)), | 535 | val = char_table_ref_and_range (char_table, XFASTINT (XCAR (range)), |
| 536 | &from, &to); | 536 | &from, &to); |
| 537 | /* Not yet implemented. */ | 537 | /* Not yet implemented. */ |
| 538 | } | 538 | } |