correct static string clearing loop (closes #16906)

This commit is contained in:
Benjamin Peterson 2013-01-09 09:52:01 -06:00
parent 7131749959
commit 0c270a8bb7
2 changed files with 11 additions and 5 deletions

View File

@ -12,6 +12,9 @@ What's New in Python 3.3.1?
Core and Builtins
-----------------
- Issue #16906: Fix a logic error that prevented most static strings from being
cleared.
- Issue #11461: Fix the incremental UTF-16 decoder. Original patch by
Amaury Forgeot d'Arc.

View File

@ -1826,12 +1826,15 @@ _PyUnicode_FromId(_Py_Identifier *id)
void
_PyUnicode_ClearStaticStrings()
{
_Py_Identifier *i;
for (i = static_strings; i; i = i->next) {
Py_DECREF(i->object);
i->object = NULL;
i->next = NULL;
_Py_Identifier *tmp, *s = static_strings;
while (s) {
Py_DECREF(s->object);
s->object = NULL;
tmp = s->next;
s->next = NULL;
s = tmp;
}
static_strings = NULL;
}
/* Internal function, doesn't check maximum character */