diff options
| author | Paul Eggert | 2011-06-12 16:25:12 -0700 |
|---|---|---|
| committer | Paul Eggert | 2011-06-12 16:25:12 -0700 |
| commit | ea204efb8a3e81a4d9b04d2a36cb8c2a1c74662c (patch) | |
| tree | b209feeebf1bdb6994f46217e29ba860dcc6c7ba /src/character.h | |
| parent | 78cf1fe8a256ffc91533b43eb851bf4519e9fbcc (diff) | |
| download | emacs-ea204efb8a3e81a4d9b04d2a36cb8c2a1c74662c.tar.gz emacs-ea204efb8a3e81a4d9b04d2a36cb8c2a1c74662c.zip | |
* lisp.h (UNSIGNED_CMP): New macro.
This fixes comparison bugs on 64-bit hosts.
(ASCII_CHAR_P): Use it.
* casefiddle.c (casify_object):
* character.h (ASCII_BYTE_P, CHAR_VALID_P):
(SINGLE_BYTE_CHAR_P, CHAR_STRING):
* composite.h (COMPOSITION_ENCODE_RULE_VALID):
* dispextern.h (FACE_FROM_ID):
* keyboard.c (read_char): Use UNSIGNED_CMP.
Diffstat (limited to 'src/character.h')
| -rw-r--r-- | src/character.h | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/src/character.h b/src/character.h index 884833775de..695a55be3fa 100644 --- a/src/character.h +++ b/src/character.h | |||
| @@ -102,13 +102,13 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */ | |||
| 102 | #define make_char(c) make_number (c) | 102 | #define make_char(c) make_number (c) |
| 103 | 103 | ||
| 104 | /* Nonzero iff C is an ASCII byte. */ | 104 | /* Nonzero iff C is an ASCII byte. */ |
| 105 | #define ASCII_BYTE_P(c) ((unsigned) (c) < 0x80) | 105 | #define ASCII_BYTE_P(c) UNSIGNED_CMP (c, <, 0x80) |
| 106 | 106 | ||
| 107 | /* Nonzero iff X is a character. */ | 107 | /* Nonzero iff X is a character. */ |
| 108 | #define CHARACTERP(x) (NATNUMP (x) && XFASTINT (x) <= MAX_CHAR) | 108 | #define CHARACTERP(x) (NATNUMP (x) && XFASTINT (x) <= MAX_CHAR) |
| 109 | 109 | ||
| 110 | /* Nonzero iff C is valid as a character code. GENERICP is not used. */ | 110 | /* Nonzero iff C is valid as a character code. GENERICP is not used. */ |
| 111 | #define CHAR_VALID_P(c, genericp) ((unsigned) (c) <= MAX_CHAR) | 111 | #define CHAR_VALID_P(c, genericp) UNSIGNED_CMP (c, <=, MAX_CHAR) |
| 112 | 112 | ||
| 113 | /* Check if Lisp object X is a character or not. */ | 113 | /* Check if Lisp object X is a character or not. */ |
| 114 | #define CHECK_CHARACTER(x) \ | 114 | #define CHECK_CHARACTER(x) \ |
| @@ -129,7 +129,7 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */ | |||
| 129 | } while (0) | 129 | } while (0) |
| 130 | 130 | ||
| 131 | /* Nonzero iff C is a character of code less than 0x100. */ | 131 | /* Nonzero iff C is a character of code less than 0x100. */ |
| 132 | #define SINGLE_BYTE_CHAR_P(c) ((unsigned) (c) < 0x100) | 132 | #define SINGLE_BYTE_CHAR_P(c) UNSIGNED_CMP (c, <, 0x100) |
| 133 | 133 | ||
| 134 | /* Nonzero if character C has a printable glyph. */ | 134 | /* Nonzero if character C has a printable glyph. */ |
| 135 | #define CHAR_PRINTABLE_P(c) \ | 135 | #define CHAR_PRINTABLE_P(c) \ |
| @@ -161,14 +161,14 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */ | |||
| 161 | Returns the length of the multibyte form. */ | 161 | Returns the length of the multibyte form. */ |
| 162 | 162 | ||
| 163 | #define CHAR_STRING(c, p) \ | 163 | #define CHAR_STRING(c, p) \ |
| 164 | ((unsigned) (c) <= MAX_1_BYTE_CHAR \ | 164 | (UNSIGNED_CMP (c, <=, MAX_1_BYTE_CHAR) \ |
| 165 | ? ((p)[0] = (c), \ | 165 | ? ((p)[0] = (c), \ |
| 166 | 1) \ | 166 | 1) \ |
| 167 | : (unsigned) (c) <= MAX_2_BYTE_CHAR \ | 167 | : UNSIGNED_CMP (c, <=, MAX_2_BYTE_CHAR) \ |
| 168 | ? ((p)[0] = (0xC0 | ((c) >> 6)), \ | 168 | ? ((p)[0] = (0xC0 | ((c) >> 6)), \ |
| 169 | (p)[1] = (0x80 | ((c) & 0x3F)), \ | 169 | (p)[1] = (0x80 | ((c) & 0x3F)), \ |
| 170 | 2) \ | 170 | 2) \ |
| 171 | : (unsigned) (c) <= MAX_3_BYTE_CHAR \ | 171 | : UNSIGNED_CMP (c, <=, MAX_3_BYTE_CHAR) \ |
| 172 | ? ((p)[0] = (0xE0 | ((c) >> 12)), \ | 172 | ? ((p)[0] = (0xE0 | ((c) >> 12)), \ |
| 173 | (p)[1] = (0x80 | (((c) >> 6) & 0x3F)), \ | 173 | (p)[1] = (0x80 | (((c) >> 6) & 0x3F)), \ |
| 174 | (p)[2] = (0x80 | ((c) & 0x3F)), \ | 174 | (p)[2] = (0x80 | ((c) & 0x3F)), \ |