Commit b86c549c authored by Guido van Rossum's avatar Guido van Rossum

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 now checked into the HEAD branch.  Tim will check in a test
case to check for this specific bug, and an assertion in
PyArgs_ParseTuple() to catch similar bugs in the future.
parent 5bba231d
......@@ -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;
}
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment