[Python-checkins] python/dist/src/Objects dictobject.c, 2.158,
2.159 enumobject.c, 1.15, 1.16 iterobject.c, 1.17, 1.18
rhettinger at users.sourceforge.net
rhettinger at users.sourceforge.net
Mon Apr 12 14:10:04 EDT 2004
Update of /cvsroot/python/python/dist/src/Objects
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv14740/Objects
Modified Files:
dictobject.c enumobject.c iterobject.c
Log Message:
* Add unittests for iterators that report their length
* Document the differences between them
* Fix corner cases covered by the unittests
* Use Py_RETURN_NONE where possible for dictionaries
Index: dictobject.c
===================================================================
RCS file: /cvsroot/python/python/dist/src/Objects/dictobject.c,v
retrieving revision 2.158
retrieving revision 2.159
diff -C2 -d -r2.158 -r2.159
*** dictobject.c 20 Mar 2004 19:11:58 -0000 2.158
--- dictobject.c 12 Apr 2004 18:10:01 -0000 2.159
***************
*** 1089,1096 ****
dict_update(PyObject *self, PyObject *args, PyObject *kwds)
{
! if (dict_update_common(self, args, kwds, "update") == -1)
! return NULL;
! Py_INCREF(Py_None);
! return Py_None;
}
--- 1089,1095 ----
dict_update(PyObject *self, PyObject *args, PyObject *kwds)
{
! if (dict_update_common(self, args, kwds, "update") != -1)
! Py_RETURN_NONE;
! return NULL;
}
***************
*** 1594,1599 ****
{
PyDict_Clear((PyObject *)mp);
! Py_INCREF(Py_None);
! return Py_None;
}
--- 1593,1597 ----
{
PyDict_Clear((PyObject *)mp);
! Py_RETURN_NONE;
}
***************
*** 2051,2055 ****
dictiter_len(dictiterobject *di)
{
! return di->len;
}
--- 2049,2055 ----
dictiter_len(dictiterobject *di)
{
! if (di->di_dict != NULL && di->di_used == di->di_dict->ma_used)
! return di->len;
! return 0;
}
Index: enumobject.c
===================================================================
RCS file: /cvsroot/python/python/dist/src/Objects/enumobject.c,v
retrieving revision 1.15
retrieving revision 1.16
diff -C2 -d -r1.15 -r1.16
*** enumobject.c 10 Mar 2004 10:10:42 -0000 1.15
--- enumobject.c 12 Apr 2004 18:10:01 -0000 1.16
***************
*** 226,229 ****
--- 226,232 ----
return item;
}
+ if (PyErr_ExceptionMatches(PyExc_IndexError) ||
+ PyErr_ExceptionMatches(PyExc_StopIteration))
+ PyErr_Clear();
}
ro->index = -1;
***************
*** 243,247 ****
reversed_len(reversedobject *ro)
{
! return ro->index + 1;
}
--- 246,258 ----
reversed_len(reversedobject *ro)
{
! int position, seqsize;
!
! if (ro->seq == NULL)
! return 0;
! seqsize = PySequence_Size(ro->seq);
! if (seqsize == -1)
! return -1;
! position = ro->index + 1;
! return (seqsize < position) ? 0 : position;
}
Index: iterobject.c
===================================================================
RCS file: /cvsroot/python/python/dist/src/Objects/iterobject.c,v
retrieving revision 1.17
retrieving revision 1.18
diff -C2 -d -r1.17 -r1.18
*** iterobject.c 18 Mar 2004 22:43:09 -0000 1.17
--- iterobject.c 12 Apr 2004 18:10:01 -0000 1.18
***************
*** 75,80 ****
iter_len(seqiterobject *it)
{
! if (it->it_seq)
! return PyObject_Size(it->it_seq) - it->it_index;
return 0;
}
--- 75,88 ----
iter_len(seqiterobject *it)
{
! int seqsize, len;
!
! if (it->it_seq) {
! seqsize = PySequence_Size(it->it_seq);
! if (seqsize == -1)
! return -1;
! len = seqsize - it->it_index;
! if (len >= 0)
! return len;
! }
return 0;
}
More information about the Python-checkins
mailing list