Kaydet (Commit) 9fa2c116 authored tarafından Guido van Rossum's avatar Guido van Rossum

use Py_CHARMASK; and don't check for neg. float to the float power here

üst 2497eada
...@@ -136,7 +136,7 @@ float_buf_repr(buf, v) ...@@ -136,7 +136,7 @@ float_buf_repr(buf, v)
for (; *cp != '\0'; cp++) { for (; *cp != '\0'; cp++) {
/* Any non-digit means it's not an integer; /* Any non-digit means it's not an integer;
this takes care of NAN and INF as well. */ this takes care of NAN and INF as well. */
if (!isdigit(*cp)) if (!isdigit(Py_CHARMASK(*cp)))
break; break;
} }
if (*cp == '\0') { if (*cp == '\0') {
...@@ -330,10 +330,6 @@ float_pow(v, w, z) ...@@ -330,10 +330,6 @@ float_pow(v, w, z)
} }
return newfloatobject(0.0); return newfloatobject(0.0);
} }
if (iv < 0.0) {
err_setstr(ValueError, "negative float to float power");
return NULL;
}
errno = 0; errno = 0;
ix = pow(iv, iw); ix = pow(iv, iw);
CHECK(ix); CHECK(ix);
......
...@@ -377,7 +377,7 @@ long_escan(str, pend, base) ...@@ -377,7 +377,7 @@ long_escan(str, pend, base)
err_setstr(ValueError, "invalid base for long literal"); err_setstr(ValueError, "invalid base for long literal");
return NULL; return NULL;
} }
while (*str != '\0' && isspace(*str)) while (*str != '\0' && isspace(Py_CHARMASK(*str)))
str++; str++;
if (*str == '+') if (*str == '+')
++str; ++str;
...@@ -385,7 +385,7 @@ long_escan(str, pend, base) ...@@ -385,7 +385,7 @@ long_escan(str, pend, base)
++str; ++str;
sign = -1; sign = -1;
} }
while (*str != '\0' && isspace(*str)) while (*str != '\0' && isspace(Py_CHARMASK(*str)))
str++; str++;
if (base == 0) { if (base == 0) {
if (str[0] != '0') if (str[0] != '0')
......
...@@ -749,10 +749,10 @@ formatstring(format, args) ...@@ -749,10 +749,10 @@ formatstring(format, args)
if (--fmtcnt >= 0) if (--fmtcnt >= 0)
c = *fmt++; c = *fmt++;
} }
else if (isdigit(c)) { else if (c >= 0 && isdigit(c)) {
width = c - '0'; width = c - '0';
while (--fmtcnt >= 0) { while (--fmtcnt >= 0) {
c = *fmt++; c = Py_CHARMASK(*fmt++);
if (!isdigit(c)) if (!isdigit(c))
break; break;
if ((width*10) / 10 != width) { if ((width*10) / 10 != width) {
...@@ -782,10 +782,10 @@ formatstring(format, args) ...@@ -782,10 +782,10 @@ formatstring(format, args)
if (--fmtcnt >= 0) if (--fmtcnt >= 0)
c = *fmt++; c = *fmt++;
} }
else if (isdigit(c)) { else if (c >= 0 && isdigit(c)) {
prec = c - '0'; prec = c - '0';
while (--fmtcnt >= 0) { while (--fmtcnt >= 0) {
c = *fmt++; c = Py_CHARMASK(*fmt++);
if (!isdigit(c)) if (!isdigit(c))
break; break;
if ((prec*10) / 10 != prec) { if ((prec*10) / 10 != prec) {
...@@ -913,7 +913,7 @@ formatstring(format, args) ...@@ -913,7 +913,7 @@ formatstring(format, args)
--rescnt; --rescnt;
*res++ = ' '; *res++ = ' ';
} }
if (dict && (argidx < arglen)) { if (dict && (argidx < arglen) && c != '%') {
err_setstr(TypeError, err_setstr(TypeError,
"not all arguments converted"); "not all arguments converted");
goto error; goto error;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment