summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAntoine Pitrou <solipsis@pitrou.net>2013-08-02 18:39:46 (GMT)
committerAntoine Pitrou <solipsis@pitrou.net>2013-08-02 18:39:46 (GMT)
commit95db2e7b8a0477ddf60902ca0aacdafbb265e5a5 (patch)
tree082db54bac3ba572964b54da33bd757661e3ab20
parent865d12a2d9108b04f3417b0f772dfff5bf9840cb (diff)
downloadcpython-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.h3
-rw-r--r--Misc/NEWS3
-rw-r--r--Python/import.c2
-rw-r--r--Python/pystate.c25
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 *);
diff --git a/Misc/NEWS b/Misc/NEWS
index bc6a810..027f5a7 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -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)
{