[Python-checkins] python/dist/src/Objects listobject.c,2.107,2.108

tim_one@users.sourceforge.net tim_one@users.sourceforge.net
Fri, 31 May 2002 22:22:57 -0700


Update of /cvsroot/python/python/dist/src/Objects
In directory usw-pr-cvs1:/tmp/cvs-serv31064/python/dist/src/Objects

Modified Files:
	listobject.c 
Log Message:
A bogus assert in the new listiter code prevented starting Python in a
debug build.  Repaired that, and rewrote other parts to reduce
long-winded casting.


Index: listobject.c
===================================================================
RCS file: /cvsroot/python/python/dist/src/Objects/listobject.c,v
retrieving revision 2.107
retrieving revision 2.108
diff -C2 -d -r2.107 -r2.108
*** listobject.c	31 May 2002 21:37:01 -0000	2.107
--- listobject.c	1 Jun 2002 05:22:55 -0000	2.108
***************
*** 1820,1825 ****
  typedef struct {
          PyObject_HEAD
!         long      it_index;
!         PyObject *it_seq;
  } listiterobject;
  
--- 1820,1825 ----
  typedef struct {
          PyObject_HEAD
!         long it_index;
!         PyListObject *it_seq;
  } listiterobject;
  
***************
*** 1840,1844 ****
          it->it_index = 0;
          Py_INCREF(seq);
!         it->it_seq = seq;
          _PyObject_GC_TRACK(it);
          return (PyObject *)it;
--- 1840,1844 ----
          it->it_index = 0;
          Py_INCREF(seq);
!         it->it_seq = (PyListObject *)seq;
          _PyObject_GC_TRACK(it);
          return (PyObject *)it;
***************
*** 1856,1860 ****
  listiter_traverse(listiterobject *it, visitproc visit, void *arg)
  {
!         return visit(it->it_seq, arg);
  }
  
--- 1856,1860 ----
  listiter_traverse(listiterobject *it, visitproc visit, void *arg)
  {
!         return visit((PyObject *)it->it_seq, arg);
  }
  
***************
*** 1868,1881 ****
  
  static PyObject *
! listiter_next(PyObject *it)
  {
!         PyObject *seq;
          PyObject *item;
  
!         assert(PyList_Check(it));
!         seq = ((listiterobject *)it)->it_seq;
  
!         if (((listiterobject *)it)->it_index < PyList_GET_SIZE(seq)) {
! 		item = ((PyListObject *)(seq))->ob_item[((listiterobject *)it)->it_index++];
                  Py_INCREF(item);
                  return item;
--- 1868,1883 ----
  
  static PyObject *
! listiter_next(listiterobject *it)
  {
!         PyListObject *seq;
          PyObject *item;
  
! 	assert(it != NULL);
!         seq = it->it_seq;
!         assert(PyList_Check(seq));
  
!         if (it->it_index < PyList_GET_SIZE(seq)) {
! 		item = PyList_GET_ITEM(seq, it->it_index);
! 		++it->it_index;
                  Py_INCREF(item);
                  return item;