Commit 059cfcff authored by Guido van Rossum's avatar Guido van Rossum

More stuff discovered while writing the simplest of testcases:

tupledealloc(): only feed the free list when the type is really a
tuple, not a subtype.  Otherwise, use PyObject_GC_Del().

_PyTuple_Resize(): disallow using this for tuple subtypes.
parent 52c1f5e2
......@@ -146,7 +146,10 @@ tupledealloc(register PyTupleObject *op)
while (--i >= 0)
Py_XDECREF(op->ob_item[i]);
#if MAXSAVESIZE > 0
if (len < MAXSAVESIZE && num_free_tuples[len] < MAXSAVEDTUPLES) {
if (len < MAXSAVESIZE &&
num_free_tuples[len] < MAXSAVEDTUPLES &&
op->ob_type == &PyTuple_Type)
{
op->ob_item[0] = (PyObject *) free_tuples[len];
num_free_tuples[len]++;
free_tuples[len] = op;
......@@ -594,7 +597,7 @@ _PyTuple_Resize(PyObject **pv, int newsize)
int sizediff;
v = (PyTupleObject *) *pv;
if (v == NULL || !PyTuple_Check(v) ||
if (v == NULL || v->ob_type != &PyTuple_Type ||
(v->ob_size != 0 && v->ob_refcnt != 1)) {
*pv = 0;
Py_XDECREF(v);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment