summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBarry Warsaw <barry@python.org>2001-02-23 16:40:48 (GMT)
committerBarry Warsaw <barry@python.org>2001-02-23 16:40:48 (GMT)
commita903ad9855947ae885c4407be8d10ef8d5521010 (patch)
treeb18bccba92efafdcac4ec1bf24a9a8068b8e3cf9
parent8d7f0869ee672d7e9e8e1bf126bf717d8223ee2b (diff)
downloadcpython-a903ad9855947ae885c4407be8d10ef8d5521010.zip
cpython-a903ad9855947ae885c4407be8d10ef8d5521010.tar.gz
cpython-a903ad9855947ae885c4407be8d10ef8d5521010.tar.bz2
_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.
-rw-r--r--Include/stringobject.h2
-rw-r--r--Objects/stringobject.c10
2 files changed, 12 insertions, 0 deletions
diff --git a/Include/stringobject.h b/Include/stringobject.h
index 85ac0b6..cadd78e 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 9cf64ba..740cbe2 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 */