|
|
|
@ -1724,21 +1724,22 @@ PySequence_Tuple(PyObject *v) |
|
|
|
break; |
|
|
|
} |
|
|
|
if (j >= n) { |
|
|
|
Py_ssize_t oldn = n; |
|
|
|
size_t newn = (size_t)n; |
|
|
|
/* The over-allocation strategy can grow a bit faster |
|
|
|
than for lists because unlike lists the |
|
|
|
over-allocation isn't permanent -- we reclaim |
|
|
|
the excess before the end of this routine. |
|
|
|
So, grow by ten and then add 25%. |
|
|
|
*/ |
|
|
|
n += 10; |
|
|
|
n += n >> 2; |
|
|
|
if (n < oldn) { |
|
|
|
newn += 10u; |
|
|
|
newn += newn >> 2; |
|
|
|
if (newn > PY_SSIZE_T_MAX) { |
|
|
|
/* Check for overflow */ |
|
|
|
PyErr_NoMemory(); |
|
|
|
Py_DECREF(item); |
|
|
|
goto Fail; |
|
|
|
} |
|
|
|
n = (Py_ssize_t)newn; |
|
|
|
if (_PyTuple_Resize(&result, n) != 0) { |
|
|
|
Py_DECREF(item); |
|
|
|
goto Fail; |
|
|
|
|