[Python-checkins] python/dist/src/Objects typeobject.c,2.126.4.21,2.126.4.22

gvanrossum@users.sourceforge.net gvanrossum@users.sourceforge.net
2002年8月01日 12:03:46 -0700


Update of /cvsroot/python/python/dist/src/Objects
In directory usw-pr-cvs1:/tmp/cvs-serv9014/Objects
Modified Files:
 Tag: release22-maint
	typeobject.c 
Log Message:
Backport:
SF patch 588728 (Nathan Srebro).
The __delete__ method wrapper for descriptors was not supported
(I added a test, too.)
Index: typeobject.c
===================================================================
RCS file: /cvsroot/python/python/dist/src/Objects/typeobject.c,v
retrieving revision 2.126.4.21
retrieving revision 2.126.4.22
diff -C2 -d -r2.126.4.21 -r2.126.4.22
*** typeobject.c	30 Jul 2002 00:57:38 -0000	2.126.4.21
--- typeobject.c	1 Aug 2002 19:03:43 -0000	2.126.4.22
***************
*** 2721,2724 ****
--- 2721,2740 ----
 	return Py_None;
 }
+ 
+ static PyObject *
+ wrap_descr_delete(PyObject *self, PyObject *args, void *wrapped)
+ {
+ 	descrsetfunc func = (descrsetfunc)wrapped;
+ 	PyObject *obj;
+ 	int ret;
+ 
+ 	if (!PyArg_ParseTuple(args, "O", &obj))
+ 		return NULL;
+ 	ret = (*func)(self, obj, NULL);
+ 	if (ret < 0)
+ 		return NULL;
+ 	Py_INCREF(Py_None);
+ 	return Py_None;
+ }
 
 static PyObject *
***************
*** 3776,3779 ****
--- 3792,3797 ----
 	TPSLOT("__set__", tp_descr_set, slot_tp_descr_set, wrap_descr_set,
 	 "descr.__set__(obj, value)"),
+ 	TPSLOT("__delete__", tp_descr_set, slot_tp_descr_set,
+ 	 wrap_descr_delete, "descr.__delete__(obj)"),
 	FLSLOT("__init__", tp_init, slot_tp_init, (wrapperfunc)wrap_init,
 	 "x.__init__(...) initializes x; "

AltStyle によって変換されたページ (->オリジナル) /