diff options
author | Antoine Pitrou <solipsis@pitrou.net> | 2013-08-02 18:39:46 (GMT) |
---|---|---|
committer | Antoine Pitrou <solipsis@pitrou.net> | 2013-08-02 18:39:46 (GMT) |
commit | 95db2e7b8a0477ddf60902ca0aacdafbb265e5a5 (patch) | |
tree | 082db54bac3ba572964b54da33bd757661e3ab20 | |
parent | 865d12a2d9108b04f3417b0f772dfff5bf9840cb (diff) | |
download | cpython-95db2e7b8a0477ddf60902ca0aacdafbb265e5a5.zip cpython-95db2e7b8a0477ddf60902ca0aacdafbb265e5a5.tar.gz cpython-95db2e7b8a0477ddf60902ca0aacdafbb265e5a5.tar.bz2 |
Backout 62658d9d8926 (issue #10241): it causes a crash at shutdown when deallocating a Tkapp object.
-rw-r--r-- | Include/pystate.h | 3 | ||||
-rw-r--r-- | Misc/NEWS | 3 | ||||
-rw-r--r-- | Python/import.c | 2 | ||||
-rw-r--r-- | Python/pystate.c | 25 |
4 files changed, 0 insertions, 33 deletions
diff --git a/Include/pystate.h b/Include/pystate.h index e41fe4c..cd1d776 100644 --- a/Include/pystate.h +++ b/Include/pystate.h @@ -134,9 +134,6 @@ PyAPI_FUNC(int) PyState_AddModule(PyObject*, struct PyModuleDef*); PyAPI_FUNC(int) PyState_RemoveModule(struct PyModuleDef*); #endif PyAPI_FUNC(PyObject*) PyState_FindModule(struct PyModuleDef*); -#ifndef Py_LIMITED_API -PyAPI_FUNC(void) _PyState_ClearModules(void); -#endif PyAPI_FUNC(PyThreadState *) PyThreadState_New(PyInterpreterState *); PyAPI_FUNC(PyThreadState *) _PyThreadState_Prealloc(PyInterpreterState *); @@ -12,9 +12,6 @@ Core and Builtins - Issue #17899: Fix rare file descriptor leak in os.listdir(). -- Issue #10241: Clear extension module dict copies at interpreter shutdown. - Patch by Neil Schemenauer, minimally modified. - - Issue #9035: ismount now recognises volumes mounted below a drive root on Windows. Original patch by Atsuo Ishimoto. diff --git a/Python/import.c b/Python/import.c index ce09ebe..0910655 100644 --- a/Python/import.c +++ b/Python/import.c @@ -380,8 +380,6 @@ PyImport_Cleanup(void) builtins = interp->builtins; interp->builtins = PyDict_New(); Py_DECREF(builtins); - /* Clear module dict copies stored in the interpreter state */ - _PyState_ClearModules(); /* Collect references */ _PyGC_CollectNoFail(); /* Dump GC stats before it's too late, since it uses the warnings diff --git a/Python/pystate.c b/Python/pystate.c index 924b6a2..40606bf 100644 --- a/Python/pystate.c +++ b/Python/pystate.c @@ -320,31 +320,6 @@ PyState_RemoveModule(struct PyModuleDef* def) return PyList_SetItem(state->modules_by_index, index, Py_None); } -/* used by import.c:PyImport_Cleanup */ -void -_PyState_ClearModules(void) -{ - PyInterpreterState *state = PyThreadState_GET()->interp; - if (state->modules_by_index) { - Py_ssize_t i; - for (i = 0; i < PyList_GET_SIZE(state->modules_by_index); i++) { - PyObject *m = PyList_GET_ITEM(state->modules_by_index, i); - if (PyModule_Check(m)) { - /* cleanup the saved copy of module dicts */ - PyModuleDef *md = PyModule_GetDef(m); - if (md) - Py_CLEAR(md->m_base.m_copy); - } - } - /* Setting modules_by_index to NULL could be dangerous, so we - clear the list instead. */ - if (PyList_SetSlice(state->modules_by_index, - 0, PyList_GET_SIZE(state->modules_by_index), - NULL)) - PyErr_WriteUnraisable(state->modules_by_index); - } -} - void PyThreadState_Clear(PyThreadState *tstate) { |