Remove the _PyUnicode_ClearStaticStrings() function from the C API.
Make the function fully private (declare it with "static").
* ``PyTuple_ClearFreeList()``
* ``PyUnicode_ClearFreeList()``: the Unicode free list has been removed in
Python 3.3.
+
+* Remove ``_PyUnicode_ClearStaticStrings()`` function.
+ (Contributed by Victor Stinner in :issue:`39465`.)
PyId_foo is a static variable, either on block level or file level. On first
usage, the string "foo" is interned, and the structures are linked. On interpreter
- shutdown, all strings are released (through _PyUnicode_ClearStaticStrings).
+ shutdown, all strings are released.
Alternatively, _Py_static_string allows choosing the variable name.
_PyUnicode_FromId returns a borrowed reference to the interned string.
/* Return an interned Unicode object for an Identifier; may fail if there is no memory.*/
PyAPI_FUNC(PyObject*) _PyUnicode_FromId(_Py_Identifier*);
-/* Clear all static strings. */
-PyAPI_FUNC(void) _PyUnicode_ClearStaticStrings(void);
/* Fast equality check when the inputs are known to be exact unicode types
and where the hash values are equal (i.e. a very probable match) */
--- /dev/null
+Remove the ``_PyUnicode_ClearStaticStrings()`` function from the C API.
return id->object;
}
-void
-_PyUnicode_ClearStaticStrings()
+static void
+unicode_clear_static_strings(void)
{
_Py_Identifier *tmp, *s = static_strings;
while (s) {
Py_CLEAR(unicode_latin1[i]);
}
#endif
- _PyUnicode_ClearStaticStrings();
+ unicode_clear_static_strings();
}
_PyUnicode_FiniEncodings(tstate);