]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
slot_sq_item(): ensure that self is an instance of the wrapper's
authorGuido van Rossum <guido@python.org>
Wed, 17 Oct 2001 07:15:43 +0000 (07:15 +0000)
committerGuido van Rossum <guido@python.org>
Wed, 17 Oct 2001 07:15:43 +0000 (07:15 +0000)
d_type before calling the wrapped function.

fixup_slot_dispatchers(): fix indentation.

Objects/typeobject.c

index 363c562fd915e77b90bc0dffa139ee5f5954c1b9..46fc2c67ea0ac76f9c1b9debd6cada8b99740a03 100644 (file)
@@ -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;