diff --git a/Objects/unicodeobject.c b/Objects/unicodeobject.c
index dd56e11..5878f96 100644
--- a/Objects/unicodeobject.c
+++ b/Objects/unicodeobject.c
@@ -624,9 +624,9 @@
 		if (*f == '%') {
 			const char* p = f;
 			width = 0;
-			while (isdigit(*f))
+			while (isdigit((unsigned)*f))
 				width = (width*10) + *f++ - '0';
-			while (*++f && *f != '%' && !isalpha(*f))
+			while (*++f && *f != '%' && !isalpha((unsigned)*f))
 				;
 
 			/* skip the 'l' or 'z' in {%ld, %zd, %lu, %zu} since
@@ -787,12 +787,12 @@
 			zeropad = (*f == '0');
 			/* parse the width.precision part */
 			width = 0;
-			while (isdigit(*f))
+			while (isdigit((unsigned)*f))
 				width = (width*10) + *f++ - '0';
 			precision = 0;
 			if (*f == '.') {
 				f++;
-				while (isdigit(*f))
+				while (isdigit((unsigned)*f))
 					precision = (precision*10) + *f++ - '0';
 			}
 			/* handle the long flag, but only for %ld and %lu.
diff --git a/Python/pystrcmp.c b/Python/pystrcmp.c
index 0012ef3..84295e7 100644
--- a/Python/pystrcmp.c
+++ b/Python/pystrcmp.c
@@ -1,4 +1,4 @@
-/* Cross platform case insenstive string compare functions
+/* Cross platform case insensitive string compare functions
  */
 
 #include "Python.h"
@@ -8,18 +8,19 @@
 {
 	if (size == 0)
 		return 0;
-	while ((--size > 0) && (tolower(*s1) == tolower(*s2))) {
+	while ((--size > 0) &&
+	       (tolower((unsigned)*s1) == tolower((unsigned)*s2))) {
 		if (!*s1++ || !*s2++)
 			break;
 	}
-	return tolower(*s1) - tolower(*s2);
+	return tolower((unsigned)*s1) - tolower((unsigned)*s2);
 }
 
 int
 PyOS_mystricmp(const char *s1, const char *s2)
 {
-	while (*s1 && (tolower(*s1++) == tolower(*s2++))) {
+	while (*s1 && (tolower((unsigned)*s1++) == tolower((unsigned)*s2++))) {
 		;
 	}
-	return (tolower(*s1) - tolower(*s2));
+	return (tolower((unsigned)*s1) - tolower((unsigned)*s2));
 }
