Fix cleanup DECREF logic in builtin_filter function.

This commit is contained in:
Georg Brandl 2005-07-19 22:20:20 +00:00
parent 150db73c78
commit e35b657efd

View file

@ -210,10 +210,15 @@ builtin_filter(PyObject *self, PyObject *args)
if (PyTuple_Check(seq))
return filtertuple(func, seq);
/* Pre-allocate argument list tuple. */
arg = PyTuple_New(1);
if (arg == NULL)
return NULL;
/* Get iterator. */
it = PyObject_GetIter(seq);
if (it == NULL)
return NULL;
goto Fail_arg;
/* Guess a result list size. */
len = PyObject_Size(seq);
@ -222,11 +227,6 @@ builtin_filter(PyObject *self, PyObject *args)
len = 8; /* arbitrary */
}
/* Pre-allocate argument list tuple. */
arg = PyTuple_New(1);
if (arg == NULL)
goto Fail_arg;
/* Get a result list. */
if (PyList_Check(seq) && seq->ob_refcnt == 1) {
/* Eww - can modify the list in-place. */