_PyUnicode_Fini(): Initialize the local freelist walking variable `u'
after unicode_empty has been freed, otherwise it might not point to
the real start of the unicode_freelist. Final closure for SF bug
#110681, Jitterbug PR#398.
diff --git a/Objects/unicodeobject.c b/Objects/unicodeobject.c
index 8d04b2d..b31675b 100644
--- a/Objects/unicodeobject.c
+++ b/Objects/unicodeobject.c
@@ -5223,11 +5223,12 @@
void
_PyUnicode_Fini(void)
{
- PyUnicodeObject *u = unicode_freelist;
+ PyUnicodeObject *u;
Py_XDECREF(unicode_empty);
unicode_empty = NULL;
- while (u != NULL) {
+
+ for (u = unicode_freelist; u != NULL;) {
PyUnicodeObject *v = u;
u = *(PyUnicodeObject **)u;
if (v->str)