]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
Fix cleanup DECREF logic in builtin_filter function.
authorGeorg Brandl <georg@python.org>
Tue, 19 Jul 2005 22:20:20 +0000 (22:20 +0000)
committerGeorg Brandl <georg@python.org>
Tue, 19 Jul 2005 22:20:20 +0000 (22:20 +0000)
Python/bltinmodule.c

index 145e9460f1d924f2ac248d0cc99a2f23d3417c6f..f63e27adc63b95037a185dd4c1cbe4f8523b591b 100644 (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. */