[Python-checkins] python/dist/src/Objects abstract.c,2.127,2.128

rhettinger at users.sourceforge.net rhettinger at users.sourceforge.net
Sun Apr 4 04:51:43 EDT 2004


Update of /cvsroot/python/python/dist/src/Objects
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv17015/Objects

Modified Files:
	abstract.c 
Log Message:
Improve accuracy of sequence and mapping checks.

Index: abstract.c
===================================================================
RCS file: /cvsroot/python/python/dist/src/Objects/abstract.c,v
retrieving revision 2.127
retrieving revision 2.128
diff -C2 -d -r2.127 -r2.128
*** abstract.c	21 Mar 2004 16:59:09 -0000	2.127
--- abstract.c	4 Apr 2004 08:51:40 -0000	2.128
***************
*** 1059,1062 ****
--- 1059,1064 ----
  PySequence_Check(PyObject *s)
  {
+ 	if (PyInstance_Check(s))
+ 		return PyObject_HasAttrString(s, "__getitem__");
  	return s != NULL && s->ob_type->tp_as_sequence &&
  		s->ob_type->tp_as_sequence->sq_item != NULL;
***************
*** 1601,1606 ****
  PyMapping_Check(PyObject *o)
  {
! 	return o && o->ob_type->tp_as_mapping &&
! 		o->ob_type->tp_as_mapping->mp_subscript;
  }
  
--- 1603,1612 ----
  PyMapping_Check(PyObject *o)
  {
! 	if (PyInstance_Check(o))
! 		return PyObject_HasAttrString(o, "__getitem__");
! 
! 	return  o && o->ob_type->tp_as_mapping &&
! 		o->ob_type->tp_as_mapping->mp_subscript &&
! 		!PyObject_HasAttrString(o, "__getslice__");
  }
  




More information about the Python-checkins mailing list