[Python-checkins] python/dist/src/Python bltinmodule.c,2.279,2.280

doerwalter@users.sourceforge.net doerwalter@users.sourceforge.net
Mon, 10 Feb 2003 09:36:43 -0800


Update of /cvsroot/python/python/dist/src/Python
In directory sc8-pr-cvs1:/tmp/cvs-serv28462/Python

Modified Files:
	bltinmodule.c 
Log Message:
Change filtertuple() to use tp_as_sequence->sq_item
instead of PyTuple_GetItem, so an overwritten __getitem__
in a tuple subclass works. SF bug #665835.


Index: bltinmodule.c
===================================================================
RCS file: /cvsroot/python/python/dist/src/Python/bltinmodule.c,v
retrieving revision 2.279
retrieving revision 2.280
diff -C2 -d -r2.279 -r2.280
*** bltinmodule.c	10 Feb 2003 14:48:29 -0000	2.279
--- bltinmodule.c	10 Feb 2003 17:36:40 -0000	2.280
***************
*** 1889,1894 ****
  		int ok;
  
! 		if ((item = PyTuple_GetItem(tuple, i)) == NULL)
  			goto Fail_1;
  		if (func == Py_None) {
  			Py_INCREF(item);
--- 1889,1899 ----
  		int ok;
  
! 		if (tuple->ob_type->tp_as_sequence &&
! 		    tuple->ob_type->tp_as_sequence->sq_item) {
! 			item = tuple->ob_type->tp_as_sequence->sq_item(tuple, i);
! 		} else {
! 			PyErr_SetString(PyExc_TypeError, "unsubscriptable object");
  			goto Fail_1;
+ 		}
  		if (func == Py_None) {
  			Py_INCREF(item);