diff --git a/Objects/floatobject.c b/Objects/floatobject.c
index c7bdbed..60dcca9 100644
--- a/Objects/floatobject.c
+++ b/Objects/floatobject.c
@@ -136,7 +136,7 @@
 	for (; *cp != '\0'; cp++) {
 		/* Any non-digit means it's not an integer;
 		   this takes care of NAN and INF as well. */
-		if (!isdigit(*cp))
+		if (!isdigit(Py_CHARMASK(*cp)))
 			break;
 	}
 	if (*cp == '\0') {
@@ -330,10 +330,6 @@
 		}
 		return newfloatobject(0.0);
 	}
-	if (iv < 0.0) {
-		err_setstr(ValueError, "negative float to float power");
-		return NULL;
-	}
 	errno = 0;
 	ix = pow(iv, iw);
 	CHECK(ix);
diff --git a/Objects/longobject.c b/Objects/longobject.c
index b9935b0..9c2dcf8 100644
--- a/Objects/longobject.c
+++ b/Objects/longobject.c
@@ -377,7 +377,7 @@
 		err_setstr(ValueError, "invalid base for long literal");
 		return NULL;
 	}
-	while (*str != '\0' && isspace(*str))
+	while (*str != '\0' && isspace(Py_CHARMASK(*str)))
 		str++;
 	if (*str == '+')
 		++str;
@@ -385,7 +385,7 @@
 		++str;
 		sign = -1;
 	}
-	while (*str != '\0' && isspace(*str))
+	while (*str != '\0' && isspace(Py_CHARMASK(*str)))
 		str++;
 	if (base == 0) {
 		if (str[0] != '0')
diff --git a/Objects/stringobject.c b/Objects/stringobject.c
index d9366ae..7df894e 100644
--- a/Objects/stringobject.c
+++ b/Objects/stringobject.c
@@ -749,10 +749,10 @@
 				if (--fmtcnt >= 0)
 					c = *fmt++;
 			}
-			else if (isdigit(c)) {
+			else if (c >= 0 && isdigit(c)) {
 				width = c - '0';
 				while (--fmtcnt >= 0) {
-					c = *fmt++;
+					c = Py_CHARMASK(*fmt++);
 					if (!isdigit(c))
 						break;
 					if ((width*10) / 10 != width) {
@@ -782,10 +782,10 @@
 					if (--fmtcnt >= 0)
 						c = *fmt++;
 				}
-				else if (isdigit(c)) {
+				else if (c >= 0 && isdigit(c)) {
 					prec = c - '0';
 					while (--fmtcnt >= 0) {
-						c = *fmt++;
+						c = Py_CHARMASK(*fmt++);
 						if (!isdigit(c))
 							break;
 						if ((prec*10) / 10 != prec) {
@@ -913,7 +913,7 @@
 				--rescnt;
 				*res++ = ' ';
 			}
-                        if (dict && (argidx < arglen)) {
+                        if (dict && (argidx < arglen) && c != '%') {
                                 err_setstr(TypeError,
                                            "not all arguments converted");
                                 goto error;
