Any call to insort_{left,right} with a non-list leaked a reference to None

(or to whatever the 'insert' method chose to return).
This commit is contained in:
Michael W. Hudson 2004-08-02 13:24:54 +00:00
parent f8df9a89bc
commit c9f510aed2
1 changed files with 10 additions and 6 deletions

View File

@ -65,7 +65,7 @@ slice of a to be searched.\n");
static PyObject *
insort_right(PyObject *self, PyObject *args)
{
PyObject *list, *item;
PyObject *list, *item, *result;
int lo = 0;
int hi = -1;
int index;
@ -80,9 +80,11 @@ insort_right(PyObject *self, PyObject *args)
if (PyList_Insert(list, index, item) < 0)
return NULL;
} else {
if (PyObject_CallMethod(list, "insert", "iO", index, item)
== NULL)
result = PyObject_CallMethod(list, "insert", "iO",
index, item);
if (result == NULL)
return NULL;
Py_DECREF(result);
}
Py_RETURN_NONE;
@ -158,7 +160,7 @@ slice of a to be searched.\n");
static PyObject *
insort_left(PyObject *self, PyObject *args)
{
PyObject *list, *item;
PyObject *list, *item, *result;
int lo = 0;
int hi = -1;
int index;
@ -173,9 +175,11 @@ insort_left(PyObject *self, PyObject *args)
if (PyList_Insert(list, index, item) < 0)
return NULL;
} else {
if (PyObject_CallMethod(list, "insert", "iO", index, item)
== NULL)
result = PyObject_CallMethod(list, "insert", "iO",
index, item);
if (result == NULL)
return NULL;
Py_DECREF(result);
}
Py_RETURN_NONE;