1820 static PyObject *
1821 btree_traverse(PyObject *iter, PyObject *tree)
1822 {
1823 PyObject *subtree, *v;
1824 long vi;
1825
1826 if ((v = PyIter_Next(iter)) == NULL) /* stop iterator */
when PyIter_Next() retrieves a value (new ref)
taking False path
1827 return NULL;
1828
1829 vi = PyObject_IsTrue(v);
when PyObject_IsTrue() returns 1 (true)
1830 Py_DECREF(v);
when taking True path
1831
1832 subtree = PyList_GetItem(tree, vi);
borrowed reference returned by PyList_GetItem() allocated at: subtree = PyList_GetItem(tree, vi);
ob_refcnt is now refs: 0 + N where N >= 1
1833
1834 if (PyList_Check(subtree) && PyList_Size(subtree) == 2)
when considering value == (long int)0 from bitarray/_bitarray.c:1834
taking False path
1835 return btree_traverse(iter, subtree);
1836 else
1837 return subtree;
1838 }
ob_refcnt of return value is 1 too low
was expecting final ob_refcnt to be N + 1 (for some unknown N)
due to object being referenced by: return value
but final ob_refcnt is N + 0
found 17 similar trace(s) to this