[Python-checkins] CVS: python/dist/src/Objects typeobject.c,2.106,2.107
Guido van Rossum
gvanrossum@users.sourceforge.net
2001年10月17日 00:15:46 -0700
Update of /cvsroot/python/python/dist/src/Objects
In directory usw-pr-cvs1:/tmp/cvs-serv16609
Modified Files:
typeobject.c
Log Message:
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.
Index: typeobject.c
===================================================================
RCS file: /cvsroot/python/python/dist/src/Objects/typeobject.c,v
retrieving revision 2.106
retrieving revision 2.107
diff -C2 -d -r2.106 -r2.107
*** typeobject.c 2001年10月16日 17:00:48 2.106
--- typeobject.c 2001年10月17日 07:15:43 2.107
***************
*** 2909,2913 ****
PyWrapperDescrObject *wrapper =
(PyWrapperDescrObject *)func;
! if (wrapper->d_base->wrapper == wrap_sq_item) {
intargfunc f;
f = (intargfunc)(wrapper->d_wrapped);
--- 2909,2914 ----
PyWrapperDescrObject *wrapper =
(PyWrapperDescrObject *)func;
! if (wrapper->d_base->wrapper == wrap_sq_item &&
! PyType_IsSubtype(self->ob_type, wrapper->d_type)) {
intargfunc f;
f = (intargfunc)(wrapper->d_wrapped);
***************
*** 3939,3945 ****
d = (PyWrapperDescrObject *)descr;
if (d->d_base->wrapper == p->wrapper &&
! PyType_IsSubtype(type, d->d_type)) {
if (specific == NULL ||
! specific == d->d_wrapped)
specific = d->d_wrapped;
else
--- 3940,3947 ----
d = (PyWrapperDescrObject *)descr;
if (d->d_base->wrapper == p->wrapper &&
! PyType_IsSubtype(type, d->d_type))
! {
if (specific == NULL ||
! specific == d->d_wrapped)
specific = d->d_wrapped;
else