Mercurial > cpython-lru_cache-weakref
diff Objects/stringobject.c @ 40626:4aee3f672f77
Merged the int/long unification branch, by very crude means (sorry Thomas!).
I banged on the code (beyond what's in that branch) to make fewer tests fail;
the only tests that fail now are:
test_descr -- can't pickle ints?!
test_pickletools -- ???
test_socket -- See python.org/sf/1619659
test_sqlite -- ???
I'll deal with those later.
| author | Guido van Rossum <guido@python.org> |
|---|---|
| date | Sun, 14 Jan 2007 03:31:43 +0000 |
| parents | cc992d75d5b3 |
| children | f2f0b41f270d |
line wrap: on
line diff
--- a/Objects/stringobject.c Sat Jan 13 23:54:39 2007 +0000 +++ b/Objects/stringobject.c Sun Jan 14 03:31:43 2007 +0000 @@ -4221,6 +4221,14 @@ int numdigits; /* len == numnondigits + numdigits */ int numnondigits = 0; + /* Avoid exceeding SSIZE_T_MAX */ + if (prec > PY_SSIZE_T_MAX-3) { + PyErr_SetString(PyExc_OverflowError, + "precision too large"); + return NULL; + } + + switch (type) { case 'd': case 'u': @@ -4565,6 +4573,8 @@ goto error; } width = PyInt_AsLong(v); + if (width == -1 && PyErr_Occurred()) + goto error; if (width < 0) { flags |= F_LJUST; width = -width; @@ -4602,6 +4612,8 @@ goto error; } prec = PyInt_AsLong(v); + if (prec == -1 && PyErr_Occurred()) + goto error; if (prec < 0) prec = 0; if (--fmtcnt >= 0)
