From: Barry Warsaw Date: Fri, 23 Feb 2001 16:40:48 +0000 (+0000) Subject: _Py_ReleaseInternedStrings(): Private API function to decref and X-Git-Tag: v2.1b1~217 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=a903ad9855947ae885c4407be8d10ef8d5521010;p=python _Py_ReleaseInternedStrings(): Private API function to decref and release the interned string dictionary. This is useful for memory use debugging because it eliminates a huge source of noise from the reports. Only defined when INTERN_STRINGS is defined. --- diff --git a/Include/stringobject.h b/Include/stringobject.h index 85ac0b6c02..cadd78e47b 100644 --- a/Include/stringobject.h +++ b/Include/stringobject.h @@ -65,9 +65,11 @@ extern DL_IMPORT(PyObject *) _PyString_FormatLong(PyObject*, int, int, #ifdef INTERN_STRINGS extern DL_IMPORT(void) PyString_InternInPlace(PyObject **); extern DL_IMPORT(PyObject *) PyString_InternFromString(const char *); +extern DL_IMPORT(void) _Py_ReleaseInternedStrings(void); #else #define PyString_InternInPlace(p) #define PyString_InternFromString(cp) PyString_FromString(cp) +#define _Py_ReleaseInternedStrings() #endif /* Macro, trading safety for speed */ diff --git a/Objects/stringobject.c b/Objects/stringobject.c index 9cf64bac58..740cbe294e 100644 --- a/Objects/stringobject.c +++ b/Objects/stringobject.c @@ -3217,3 +3217,13 @@ PyString_Fini(void) } #endif } + +#ifdef INTERN_STRINGS +void _Py_ReleaseInternedStrings(void) +{ + if (interned) { + Py_DECREF(interned); + interned = NULL; + } +} +#endif /* INTERN_STRINGS */