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.
This commit is contained in:
Eric Snow 2017-09-11 17:59:22 -07:00 committed by Victor Stinner
parent ba6d5d1def
commit 8728018624
7 changed files with 47 additions and 43 deletions

View file

@ -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