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