Mercurial > cpython-lru_cache-weakref
diff Objects/enumobject.c @ 53951:30edd7f6101b legacy-trunk
*sigh* deal with instances correctly
| author | Benjamin Peterson <benjamin@python.org> |
|---|---|
| date | Sat, 09 May 2009 17:23:03 +0000 |
| parents | 73986a9ca1d6 |
| children | 0c617b7a727a |
line wrap: on
line diff
--- a/Objects/enumobject.c Sat May 09 17:13:10 2009 +0000 +++ b/Objects/enumobject.c Sat May 09 17:23:03 2009 +0000 @@ -232,7 +232,18 @@ if (!PyArg_UnpackTuple(args, "reversed", 1, 1, &seq) ) return NULL; - reversed_meth = _PyObject_LookupSpecial(seq, "__reversed__", &reversed_cache); + if (PyInstance_Check(seq)) { + reversed_meth = PyObject_GetAttrString(seq, "__reversed__"); + if (reversed_meth == NULL) { + if (PyErr_ExceptionMatches(PyExc_AttributeError)) + PyErr_Clear(); + else + return NULL; + } + } + else + reversed_meth = _PyObject_LookupSpecial(seq, "__reversed__", + &reversed_cache); if (reversed_meth != NULL) { PyObject *res = PyObject_CallFunctionObjArgs(reversed_meth, NULL); Py_DECREF(reversed_meth);
