[Python-checkins] CVS: python/dist/src/Objects listobject.c,2.88,2.88.2.1

Guido van Rossum gvanrossum@users.sourceforge.net
Mon, 12 Feb 2001 14:03:04 -0800


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

Modified Files:
      Tag: release20-maint
	listobject.c 
Log Message:
Fix core dump whenever PyList_Reverse() was called.

This fixes SF bug #132008, reported by Warren J. Hack.

The copyright for this patch (and this patch only) belongs to CNRI, as
part of the (yet to be issued) 1.6.1 release.

This is checked into the 2.0 mainenance branch!  The HEAD branch comes
next.


Index: listobject.c
===================================================================
RCS file: /cvsroot/python/python/dist/src/Objects/listobject.c,v
retrieving revision 2.88
retrieving revision 2.88.2.1
diff -C2 -r2.88 -r2.88.2.1
*** listobject.c	2000/09/26 05:46:01	2.88
--- listobject.c	2001/02/12 22:03:02	2.88.2.1
***************
*** 1273,1288 ****
  }
  
! static PyObject *
! listreverse(PyListObject *self, PyObject *args)
  {
  	register PyObject **p, **q;
  	register PyObject *tmp;
  	
- 	if (!PyArg_ParseTuple(args, ":reverse"))
- 		return NULL;
- 
  	if (self->ob_size > 1) {
  		for (p = self->ob_item, q = self->ob_item + self->ob_size - 1;
! 						p < q; p++, q--) {
  			tmp = *p;
  			*p = *q;
--- 1273,1287 ----
  }
  
! static void
! _listreverse(PyListObject *self)
  {
  	register PyObject **p, **q;
  	register PyObject *tmp;
  	
  	if (self->ob_size > 1) {
  		for (p = self->ob_item, q = self->ob_item + self->ob_size - 1;
! 		     p < q;
! 		     p++, q--)
! 		{
  			tmp = *p;
  			*p = *q;
***************
*** 1290,1294 ****
  		}
  	}
! 	
  	Py_INCREF(Py_None);
  	return Py_None;
--- 1289,1300 ----
  		}
  	}
! }
! 
! static PyObject *
! listreverse(PyListObject *self, PyObject *args)
! {
! 	if (!PyArg_ParseTuple(args, ":reverse"))
! 		return NULL;
! 	_listreverse(self);
  	Py_INCREF(Py_None);
  	return Py_None;
***************
*** 1302,1309 ****
  		return -1;
  	}
! 	v = listreverse((PyListObject *)v, (PyObject *)NULL);
! 	if (v == NULL)
! 		return -1;
! 	Py_DECREF(v);
  	return 0;
  }
--- 1308,1312 ----
  		return -1;
  	}
! 	_listreverse((PyListObject *)v);
  	return 0;
  }