Commit caf59043 authored by Guido van Rossum's avatar Guido van Rossum

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.
parent bcbdc95e
......@@ -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;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment