Mercurial > cpython-lru_cache-weakref
diff Python/import.c @ 16712:6341f8d909ac legacy-trunk
The code in PyImport_Import() tried to save itself a bit of work and
save the __builtin__ module in a static variable. But this doesn't
work across Py_Finalise()/Py_Initialize()! It also doesn't work when
using multiple interpreter states created with PyInterpreterState_New().
So I'm ripping out this small optimization.
This was probably broken since PyImport_Import() was introduced in
1997! We really need a better test suite for multiple interpreter
states and repeatedly initializing.
This fixes the problems Barry reported in Demo/embed/loop.c.
| author | Guido van Rossum <guido@python.org> |
|---|---|
| date | Tue, 20 Feb 2001 21:43:24 +0000 |
| parents | b59f3a1eb123 |
| children | 3b05212c1616 |
line wrap: on
line diff
--- a/Python/import.c Tue Feb 20 20:54:28 2001 +0000 +++ b/Python/import.c Tue Feb 20 21:43:24 2001 +0000 @@ -1154,7 +1154,8 @@ name, buf); return 0; } - if ( namelen > fss.name[0] || strncmp(name, (char *)fss.name+1, namelen) != 0 ) { + if (namelen > fss.name[0] || + strncmp(name, (char *)fss.name+1, namelen) != 0) { PyErr_Format(PyExc_NameError, "Case mismatch for module name %.100s\n(filename %.300s)", name, fss.name); @@ -1873,7 +1874,6 @@ static PyObject *silly_list = NULL; static PyObject *builtins_str = NULL; static PyObject *import_str = NULL; - static PyObject *standard_builtins = NULL; PyObject *globals = NULL; PyObject *import = NULL; PyObject *builtins = NULL; @@ -1894,7 +1894,7 @@ /* Get the builtins from current globals */ globals = PyEval_GetGlobals(); - if(globals != NULL) { + if (globals != NULL) { Py_INCREF(globals); builtins = PyObject_GetItem(globals, builtins_str); if (builtins == NULL) @@ -1904,16 +1904,10 @@ /* No globals -- use standard builtins, and fake globals */ PyErr_Clear(); - if (standard_builtins == NULL) { - standard_builtins = - PyImport_ImportModuleEx("__builtin__", - NULL, NULL, NULL); - if (standard_builtins == NULL) - return NULL; - } - - builtins = standard_builtins; - Py_INCREF(builtins); + builtins = PyImport_ImportModuleEx("__builtin__", + NULL, NULL, NULL); + if (builtins == NULL) + return NULL; globals = Py_BuildValue("{OO}", builtins_str, builtins); if (globals == NULL) goto err;
