bpo-28411: Isolate PyInterpreterState.modules (#3575)

A bunch of code currently uses PyInterpreterState.modules directly instead of PyImport_GetModuleDict(). This complicates efforts to make changes relative to sys.modules. This patch switches to using PyImport_GetModuleDict() uniformly. Also, a number of related uses of sys.modules are updated for uniformity for the same reason.

Note that this code was already reviewed and merged as part of #1638. I reverted that and am now splitting it up into more focused parts.
This commit is contained in:
Eric Snow 2017-09-14 12:18:12 -06:00 committed by GitHub
parent 8dcf22f442
commit d393c1b227
10 changed files with 116 additions and 55 deletions

View file

@ -215,7 +215,8 @@ _PyImport_LoadDynamicModuleWithSpec(PyObject *spec, FILE *fp)
else
Py_INCREF(path);
if (_PyImport_FixupExtensionObject(m, name_unicode, path) < 0)
PyObject *modules = PyImport_GetModuleDict();
if (_PyImport_FixupExtensionObject(m, name_unicode, path, modules) < 0)
goto error;
Py_DECREF(name_unicode);