mirror of
https://github.com/python/cpython.git
synced 2025-11-01 02:38:53 +00:00
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.
This commit is contained in:
parent
5b787e8bc2
commit
ddefaf31b3
46 changed files with 798 additions and 404 deletions
|
|
@ -4221,6 +4221,14 @@ _PyString_FormatLong(PyObject *val, int flags, int prec, int type,
|
|||
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 @@ PyString_Format(PyObject *format, PyObject *args)
|
|||
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 @@ PyString_Format(PyObject *format, PyObject *args)
|
|||
goto error;
|
||||
}
|
||||
prec = PyInt_AsLong(v);
|
||||
if (prec == -1 && PyErr_Occurred())
|
||||
goto error;
|
||||
if (prec < 0)
|
||||
prec = 0;
|
||||
if (--fmtcnt >= 0)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue