diff options
Diffstat (limited to 'Python/bltinmodule.c')
-rw-r--r-- | Python/bltinmodule.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/Python/bltinmodule.c b/Python/bltinmodule.c index b9aa85cdcf..338e38d70a 100644 --- a/Python/bltinmodule.c +++ b/Python/bltinmodule.c @@ -1888,8 +1888,13 @@ filtertuple(PyObject *func, PyObject *tuple) PyObject *item, *good; int ok; - if ((item = PyTuple_GetItem(tuple, i)) == NULL) + if (tuple->ob_type->tp_as_sequence && + tuple->ob_type->tp_as_sequence->sq_item) { + item = tuple->ob_type->tp_as_sequence->sq_item(tuple, i); + } else { + PyErr_SetString(PyExc_TypeError, "unsubscriptable object"); goto Fail_1; + } if (func == Py_None) { Py_INCREF(item); good = item; |