Skip to content

Commit

Permalink
Backout 62658d9d8926 (issue python#10241): it causes a crash at shutd…
Browse files Browse the repository at this point in the history
…own when deallocating a Tkapp object.
  • Loading branch information
pitrou committed Aug 2, 2013
1 parent 865d12a commit 95db2e7
Show file tree
Hide file tree
Showing 4 changed files with 0 additions and 33 deletions.
3 changes: 0 additions & 3 deletions Include/pystate.h
Original file line number Diff line number Diff line change
Expand Up @@ -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 *);
Expand Down
3 changes: 0 additions & 3 deletions Misc/NEWS
Original file line number Diff line number Diff line change
Expand Up @@ -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.

Expand Down
2 changes: 0 additions & 2 deletions Python/import.c
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
25 changes: 0 additions & 25 deletions Python/pystate.c
Original file line number Diff line number Diff line change
Expand Up @@ -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)
{
Expand Down

0 comments on commit 95db2e7

Please sign in to comment.