summaryrefslogtreecommitdiff
path: root/firmware/include/ctype.h
diff options
context:
space:
mode:
authorMagnus Holmgren <magnushol@gmail.com>2005-08-11 19:32:39 +0000
committerMagnus Holmgren <magnushol@gmail.com>2005-08-11 19:32:39 +0000
commit889ab162a53f573ddddae2ee6d1c97889695ff90 (patch)
treeab44983be22ab3b0ecb1a4a47e3d439a5fbdef6a /firmware/include/ctype.h
parentdc4a6b828ea9a36e839747249dfdb085ced7af07 (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/ctype.h')
-rw-r--r--firmware/include/ctype.h28
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