diff options
author | Magnus Holmgren <magnushol@gmail.com> | 2005-08-11 19:32:39 +0000 |
---|---|---|
committer | Magnus Holmgren <magnushol@gmail.com> | 2005-08-11 19:32:39 +0000 |
commit | 889ab162a53f573ddddae2ee6d1c97889695ff90 (patch) | |
tree | ab44983be22ab3b0ecb1a4a47e3d439a5fbdef6a /firmware/include | |
parent | dc4a6b828ea9a36e839747249dfdb085ced7af07 (diff) |
Cast to unsigned isn't enough in the isXXXX macros (chars > 127 caused a negative array index). With a cast to unsigned char, the macros work as expected. The other macros were changed accordingly.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@7305 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'firmware/include')
-rw-r--r-- | firmware/include/ctype.h | 28 |
1 files changed, 14 insertions, 14 deletions
diff --git a/firmware/include/ctype.h b/firmware/include/ctype.h index e0d20cc672..aba91a826b 100644 --- a/firmware/include/ctype.h +++ b/firmware/include/ctype.h @@ -43,29 +43,29 @@ extern const unsigned char _ctype_[257]; #endif #ifndef __cplusplus -#define isalpha(c) ((_ctype_+1)[(unsigned)(c)]&(_U|_L)) -#define isupper(c) ((_ctype_+1)[(unsigned)(c)]&_U) -#define islower(c) ((_ctype_+1)[(unsigned)(c)]&_L) -#define isdigit(c) ((_ctype_+1)[(unsigned)(c)]&_N) -#define isxdigit(c) ((_ctype_+1)[(unsigned)(c)]&(_X|_N)) -#define isspace(c) ((_ctype_+1)[(unsigned)(c)]&_S) -#define ispunct(c) ((_ctype_+1)[(unsigned)(c)]&_P) -#define isalnum(c) ((_ctype_+1)[(unsigned)(c)]&(_U|_L|_N)) -#define isprint(c) ((_ctype_+1)[(unsigned)(c)]&(_P|_U|_L|_N|_B)) -#define isgraph(c) ((_ctype_+1)[(unsigned)(c)]&(_P|_U|_L|_N)) -#define iscntrl(c) ((_ctype_+1)[(unsigned)(c)]&_C) +#define isalpha(c) ((_ctype_+1)[(unsigned char)(c)]&(_U|_L)) +#define isupper(c) ((_ctype_+1)[(unsigned char)(c)]&_U) +#define islower(c) ((_ctype_+1)[(unsigned char)(c)]&_L) +#define isdigit(c) ((_ctype_+1)[(unsigned char)(c)]&_N) +#define isxdigit(c) ((_ctype_+1)[(unsigned char)(c)]&(_X|_N)) +#define isspace(c) ((_ctype_+1)[(unsigned char)(c)]&_S) +#define ispunct(c) ((_ctype_+1)[(unsigned char)(c)]&_P) +#define isalnum(c) ((_ctype_+1)[(unsigned char)(c)]&(_U|_L|_N)) +#define isprint(c) ((_ctype_+1)[(unsigned char)(c)]&(_P|_U|_L|_N|_B)) +#define isgraph(c) ((_ctype_+1)[(unsigned char)(c)]&(_P|_U|_L|_N)) +#define iscntrl(c) ((_ctype_+1)[(unsigned char)(c)]&_C) /* Non-gcc versions will get the library versions, and will be slightly slower */ #ifdef __GNUC__ # define toupper(c) \ - __extension__ ({ int __x = (c); islower(__x) ? (__x - 'a' + 'A') : __x;}) + __extension__ ({ int __x = (unsigned char) (c); islower(__x) ? (__x - 'a' + 'A') : __x;}) # define tolower(c) \ - __extension__ ({ int __x = (c); isupper(__x) ? (__x - 'A' + 'a') : __x;}) + __extension__ ({ int __x = (unsigned char) (c); isupper(__x) ? (__x - 'A' + 'a') : __x;}) #endif #endif /* !__cplusplus */ #ifndef __STRICT_ANSI__ -#define isascii(c) ((unsigned)(c)<=0177) +#define isascii(c) ((unsigned char)(c)<=0177) #define toascii(c) ((c)&0177) #endif |