diff --git a/Objects/listobject.c b/Objects/listobject.c index f57f6fbed8d..0087c63521e 100644 --- a/Objects/listobject.c +++ b/Objects/listobject.c @@ -1268,24 +1268,30 @@ PyList_Sort(PyObject *v) return 0; } -static PyObject * -listreverse(PyListObject *self, PyObject *args) +static void +_listreverse(PyListObject *self) { 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--) { + p < q; + p++, q--) + { tmp = *p; *p = *q; *q = tmp; } } - +} + +static PyObject * +listreverse(PyListObject *self, PyObject *args) +{ + if (!PyArg_ParseTuple(args, ":reverse")) + return NULL; + _listreverse(self); Py_INCREF(Py_None); return Py_None; } @@ -1297,10 +1303,7 @@ PyList_Reverse(PyObject *v) PyErr_BadInternalCall(); return -1; } - v = listreverse((PyListObject *)v, (PyObject *)NULL); - if (v == NULL) - return -1; - Py_DECREF(v); + _listreverse((PyListObject *)v); return 0; }