summaryrefslogtreecommitdiff
path: root/Python/pylifecycle.c
diff options
context:
space:
mode:
authorEric Snow <ericsnowcurrently@gmail.com>2017-09-11 17:59:22 -0700
committerVictor Stinner <victor.stinner@gmail.com>2017-09-11 17:59:22 -0700
commit8728018624f257c7cfe44014742ae46134047f49 (patch)
treed3465549106d04472cb05f70b317f20dd7fc77f6 /Python/pylifecycle.c
parentba6d5d1defd7a281c8c8804e4b4cfd7370886236 (diff)
downloadcpython-git-8728018624f257c7cfe44014742ae46134047f49.tar.gz
bpo-30860: Fix a refleak. (#3506)
* Drop warnoptions from PyInterpreterState. * Drop xoptions from PyInterpreterState. * Don't set warnoptions and _xoptions again. * Decref after adding to sys.__dict__. * Drop an unused macro. * Check sys.xoptions *before* we delete it.
Diffstat (limited to 'Python/pylifecycle.c')
-rw-r--r--Python/pylifecycle.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/Python/pylifecycle.c b/Python/pylifecycle.c
index caa324e3af..3265d70181 100644
--- a/Python/pylifecycle.c
+++ b/Python/pylifecycle.c
@@ -1006,6 +1006,11 @@ Py_FinalizeEx(void)
while (_PyGC_CollectIfEnabled() > 0)
/* nothing */;
#endif
+
+#ifdef Py_REF_DEBUG
+ PyObject *showrefcount = _PyDebug_XOptionShowRefCount();
+#endif
+
/* Destroy all modules */
PyImport_Cleanup();
@@ -1053,7 +1058,10 @@ Py_FinalizeEx(void)
/* dump hash stats */
_PyHash_Fini();
- _PY_DEBUG_PRINT_TOTAL_REFS();
+#ifdef Py_REF_DEBUG
+ if (showrefcount == Py_True)
+ _PyDebug_PrintTotalRefs();
+#endif
#ifdef Py_TRACE_REFS
/* Display all objects still alive -- this can invoke arbitrary