diff options
Diffstat (limited to 'Objects/listobject.c')
-rw-r--r-- | Objects/listobject.c | 25 |
1 files changed, 14 insertions, 11 deletions
diff --git a/Objects/listobject.c b/Objects/listobject.c index f57f6fb..0087c63 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; } |