summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGuido van Rossum <guido@python.org>2001-02-20 21:43:24 (GMT)
committerGuido van Rossum <guido@python.org>2001-02-20 21:43:24 (GMT)
commit85cd1d690cfd0bad9b6ee98578fadf2a7d8988e9 (patch)
tree8328e0e5e2edb9f8db5054b309cfaabec35706b6
parent8b41116c2268ce867bfc550146f50f792951c678 (diff)
downloadcpython-85cd1d690cfd0bad9b6ee98578fadf2a7d8988e9.zip
cpython-85cd1d690cfd0bad9b6ee98578fadf2a7d8988e9.tar.gz
cpython-85cd1d690cfd0bad9b6ee98578fadf2a7d8988e9.tar.bz2
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.
-rw-r--r--Python/import.c20
1 files changed, 7 insertions, 13 deletions
diff --git a/Python/import.c b/Python/import.c
index 71af3bd..b0069e4 100644
--- a/Python/import.c
+++ b/Python/import.c
@@ -1154,7 +1154,8 @@ check_case(char *buf, int len, int namelen, char *name)
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 @@ PyImport_Import(PyObject *module_name)
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 @@ PyImport_Import(PyObject *module_name)
/* 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 @@ PyImport_Import(PyObject *module_name)
/* 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;