From 03b54e9f3775dd174aef7343d58a9ea64eee46e3 Mon Sep 17 00:00:00 2001 From: "Michael W. Hudson" Date: Fri, 5 Apr 2002 15:39:31 +0000 Subject: backport gvanrossum's checkin of revision 2.133 of typeobject.c SF patch 537536 by Phillip J. Eby, fix for SF bug 535444, super() broken w/ classmethods. Bugfix candidate. --- Objects/typeobject.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/Objects/typeobject.c b/Objects/typeobject.c index c938f52..bc7a189 100644 --- a/Objects/typeobject.c +++ b/Objects/typeobject.c @@ -3994,10 +3994,13 @@ super_getattro(PyObject *self, PyObject *name) if (su->obj != NULL) { PyObject *mro, *res, *tmp, *dict; + PyTypeObject *starttype; descrgetfunc f; int i, n; - mro = su->obj->ob_type->tp_mro; + starttype = su->obj->ob_type; + mro = starttype->tp_mro; + if (mro == NULL) n = 0; else { @@ -4009,7 +4012,8 @@ super_getattro(PyObject *self, PyObject *name) break; } if (i >= n && PyType_Check(su->obj)) { - mro = ((PyTypeObject *)(su->obj))->tp_mro; + starttype = (PyTypeObject *)(su->obj); + mro = starttype->tp_mro; if (mro == NULL) n = 0; else { @@ -4037,7 +4041,7 @@ super_getattro(PyObject *self, PyObject *name) Py_INCREF(res); f = res->ob_type->tp_descr_get; if (f != NULL) { - tmp = f(res, su->obj, res); + tmp = f(res, su->obj, (PyObject *)starttype); Py_DECREF(res); res = tmp; } -- cgit v0.12