Fix cleanup DECREF logic in builtin_filter function.
This commit is contained in:
parent
150db73c78
commit
e35b657efd
@ -210,10 +210,15 @@ builtin_filter(PyObject *self, PyObject *args)
|
|||||||
if (PyTuple_Check(seq))
|
if (PyTuple_Check(seq))
|
||||||
return filtertuple(func, seq);
|
return filtertuple(func, seq);
|
||||||
|
|
||||||
|
/* Pre-allocate argument list tuple. */
|
||||||
|
arg = PyTuple_New(1);
|
||||||
|
if (arg == NULL)
|
||||||
|
return NULL;
|
||||||
|
|
||||||
/* Get iterator. */
|
/* Get iterator. */
|
||||||
it = PyObject_GetIter(seq);
|
it = PyObject_GetIter(seq);
|
||||||
if (it == NULL)
|
if (it == NULL)
|
||||||
return NULL;
|
goto Fail_arg;
|
||||||
|
|
||||||
/* Guess a result list size. */
|
/* Guess a result list size. */
|
||||||
len = PyObject_Size(seq);
|
len = PyObject_Size(seq);
|
||||||
@ -222,11 +227,6 @@ builtin_filter(PyObject *self, PyObject *args)
|
|||||||
len = 8; /* arbitrary */
|
len = 8; /* arbitrary */
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Pre-allocate argument list tuple. */
|
|
||||||
arg = PyTuple_New(1);
|
|
||||||
if (arg == NULL)
|
|
||||||
goto Fail_arg;
|
|
||||||
|
|
||||||
/* Get a result list. */
|
/* Get a result list. */
|
||||||
if (PyList_Check(seq) && seq->ob_refcnt == 1) {
|
if (PyList_Check(seq) && seq->ob_refcnt == 1) {
|
||||||
/* Eww - can modify the list in-place. */
|
/* Eww - can modify the list in-place. */
|
||||||
|
Loading…
x
Reference in New Issue
Block a user