Initial patch by Matthias Troffaes.
.. c:function:: int PySet_Clear(PyObject *set)
Empty an existing set of all elements.
+
+
+.. c:function:: int PySet_ClearFreeList()
+
+ Clear the free list. Return the total number of freed items.
+
+ .. versionadded:: 3.3
PyAPI_FUNC(PyObject *) PySet_Pop(PyObject *set);
#ifndef Py_LIMITED_API
PyAPI_FUNC(int) _PySet_Update(PyObject *set, PyObject *iterable);
+
+PyAPI_FUNC(int) PySet_ClearFreeList(void);
#endif
#ifdef __cplusplus
Core and Builtins
-----------------
+- Issue #6695: Full garbage collection runs now clear the freelist of set
+ objects. Initial patch by Matthias Troffaes.
+
- Fix OSError.__init__ and OSError.__new__ so that each of them can be
overriden and take additional arguments (followup to issue #12555).
(void)PyFloat_ClearFreeList();
(void)PyList_ClearFreeList();
(void)PyDict_ClearFreeList();
+ (void)PySet_ClearFreeList();
}
static double
return emptyfrozenset;
}
-void
-PySet_Fini(void)
+int
+PySet_ClearFreeList(void)
{
+ int freelist_size = numfree;
PySetObject *so;
while (numfree) {
so = free_list[numfree];
PyObject_GC_Del(so);
}
+ return freelist_size;
+}
+
+void
+PySet_Fini(void)
+{
+ PySet_ClearFreeList();
Py_CLEAR(dummy);
Py_CLEAR(emptyfrozenset);
}