diff options
author | Guido van Rossum <guido@python.org> | 1995-02-10 17:00:37 (GMT) |
---|---|---|
committer | Guido van Rossum <guido@python.org> | 1995-02-10 17:00:37 (GMT) |
commit | 9fa2c116139a22d647fc736cf36dfd815c6de944 (patch) | |
tree | e4db1c79b8e5adf691f1d418e9a074ff2c906cd7 | |
parent | 2497eada60349dc5f2eb8314f2128069374a35a2 (diff) | |
download | cpython-9fa2c116139a22d647fc736cf36dfd815c6de944.zip cpython-9fa2c116139a22d647fc736cf36dfd815c6de944.tar.gz cpython-9fa2c116139a22d647fc736cf36dfd815c6de944.tar.bz2 |
use Py_CHARMASK; and don't check for neg. float to the float power here
-rw-r--r-- | Objects/floatobject.c | 6 | ||||
-rw-r--r-- | Objects/longobject.c | 4 | ||||
-rw-r--r-- | Objects/stringobject.c | 10 |
3 files changed, 8 insertions, 12 deletions
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 @@ float_buf_repr(buf, v) 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 @@ float_pow(v, w, z) } 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 @@ long_escan(str, pend, base) 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 @@ long_escan(str, pend, base) ++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 @@ formatstring(format, args) 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 @@ formatstring(format, args) 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 @@ formatstring(format, args) --rescnt; *res++ = ' '; } - if (dict && (argidx < arglen)) { + if (dict && (argidx < arglen) && c != '%') { err_setstr(TypeError, "not all arguments converted"); goto error; |