diff options
author | Mark Dickinson <mdickinson@enthought.com> | 2012-10-06 17:05:14 (GMT) |
---|---|---|
committer | Mark Dickinson <mdickinson@enthought.com> | 2012-10-06 17:05:14 (GMT) |
commit | ff9c54aca28592a3eab0bdba1ddd977b441e1e9f (patch) | |
tree | 9ffb1c0c0b9aad8615cfae28c3ebbea5c67c4752 /Objects/tupleobject.c | |
parent | 7e3cde590140052776ad219817e7bd7b87e3d4cd (diff) | |
parent | c04ddff290fc203d05b75c8569b748525fb76b5b (diff) | |
download | cpython-ff9c54aca28592a3eab0bdba1ddd977b441e1e9f.zip cpython-ff9c54aca28592a3eab0bdba1ddd977b441e1e9f.tar.gz cpython-ff9c54aca28592a3eab0bdba1ddd977b441e1e9f.tar.bz2 |
Issue #16096: Merge fixes from 3.3.
Diffstat (limited to 'Objects/tupleobject.c')
-rw-r--r-- | Objects/tupleobject.c | 12 |
1 files changed, 4 insertions, 8 deletions
diff --git a/Objects/tupleobject.c b/Objects/tupleobject.c index b76125a..9c843fa 100644 --- a/Objects/tupleobject.c +++ b/Objects/tupleobject.c @@ -96,15 +96,11 @@ PyTuple_New(register Py_ssize_t size) else #endif { - Py_ssize_t nbytes = size * sizeof(PyObject *); /* Check for overflow */ - if (nbytes / sizeof(PyObject *) != (size_t)size || - (nbytes > PY_SSIZE_T_MAX - sizeof(PyTupleObject) - sizeof(PyObject *))) - { + if (size > (PY_SSIZE_T_MAX - sizeof(PyTupleObject) - + sizeof(PyObject *)) / sizeof(PyObject *)) { return PyErr_NoMemory(); } - /* nbytes += sizeof(PyTupleObject) - sizeof(PyObject *); */ - op = PyObject_GC_NewVar(PyTupleObject, &PyTuple_Type, size); if (op == NULL) return NULL; @@ -481,9 +477,9 @@ tuplerepeat(PyTupleObject *a, Py_ssize_t n) if (Py_SIZE(a) == 0) return PyTuple_New(0); } - size = Py_SIZE(a) * n; - if (size/Py_SIZE(a) != n) + if (n > PY_SSIZE_T_MAX / Py_SIZE(a)) return PyErr_NoMemory(); + size = Py_SIZE(a) * n; np = (PyTupleObject *) PyTuple_New(size); if (np == NULL) return NULL; |