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.
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;
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);