diff --git a/src/ChangeLog b/src/ChangeLog
index 67975977..f4eaa004 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,8 @@
+2003-09-19  Hrvoje Niksic  <hniksic@xemacs.org>
+
+	* safe-ctype.h (_sch_test): Cast BIT to unsigned char, like latest
+	gcc does.
+
 2003-09-19  Hrvoje Niksic  <hniksic@xemacs.org>
 
 	* wget.h (BOUNDED_TO_ALLOCA): Evaluate PLACE only once.
diff --git a/src/safe-ctype.h b/src/safe-ctype.h
index 5e8878c4..af88a26b 100644
--- a/src/safe-ctype.h
+++ b/src/safe-ctype.h
@@ -100,7 +100,7 @@ enum {
 /* Character classification.  */
 extern const unsigned short _sch_istable[256];
 
-#define _sch_test(c, bit) (_sch_istable[(c) & 0xff] & (bit))
+#define _sch_test(c, bit) (_sch_istable[(c) & 0xff] & (unsigned char)(bit))
 
 #define ISALPHA(c)  _sch_test(c, _sch_isalpha)
 #define ISALNUM(c)  _sch_test(c, _sch_isalnum)