From caf59043d14254c8c4e47070d844e678487ece43 Mon Sep 17 00:00:00 2001 From: Guido van Rossum Date: Wed, 17 Oct 2001 07:15:43 +0000 Subject: slot_sq_item(): ensure that self is an instance of the wrapper's d_type before calling the wrapped function. fixup_slot_dispatchers(): fix indentation. --- Objects/typeobject.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/Objects/typeobject.c b/Objects/typeobject.c index 363c562..46fc2c6 100644 --- a/Objects/typeobject.c +++ b/Objects/typeobject.c @@ -2908,7 +2908,8 @@ slot_sq_item(PyObject *self, int i) if (func->ob_type == &PyWrapperDescr_Type) { PyWrapperDescrObject *wrapper = (PyWrapperDescrObject *)func; - if (wrapper->d_base->wrapper == wrap_sq_item) { + if (wrapper->d_base->wrapper == wrap_sq_item && + PyType_IsSubtype(self->ob_type, wrapper->d_type)) { intargfunc f; f = (intargfunc)(wrapper->d_wrapped); return f(self, i); @@ -3938,9 +3939,10 @@ fixup_slot_dispatchers(PyTypeObject *type) if (descr->ob_type == &PyWrapperDescr_Type) { d = (PyWrapperDescrObject *)descr; if (d->d_base->wrapper == p->wrapper && - PyType_IsSubtype(type, d->d_type)) { + PyType_IsSubtype(type, d->d_type)) + { if (specific == NULL || - specific == d->d_wrapped) + specific == d->d_wrapped) specific = d->d_wrapped; else use_generic = 1; -- cgit v0.12