mirror of https://github.com/python/cpython
The version of PyImport_Import() in cPickle is no longer needed (an edited
version was moved into import.c long ago), so squashed the duplication.
This commit is contained in:
parent
4b499dd3fb
commit
aae53d47d6
|
@ -824,70 +824,6 @@ put2(Picklerobject *self, PyObject *ob)
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
#define PyImport_Import cPickle_Import
|
|
||||||
|
|
||||||
static PyObject *
|
|
||||||
PyImport_Import(PyObject *module_name)
|
|
||||||
{
|
|
||||||
static PyObject *silly_list=0, *__builtins___str=0, *__import___str;
|
|
||||||
static PyObject *standard_builtins=0;
|
|
||||||
PyObject *globals=0, *__import__=0, *__builtins__=0, *r=0;
|
|
||||||
|
|
||||||
if (!( silly_list )) {
|
|
||||||
if (!( __import___str=PyString_FromString("__import__")))
|
|
||||||
return NULL;
|
|
||||||
if (!( __builtins___str=PyString_FromString("__builtins__")))
|
|
||||||
return NULL;
|
|
||||||
if (!( silly_list=Py_BuildValue("[s]","__doc__")))
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((globals=PyEval_GetGlobals())) {
|
|
||||||
Py_INCREF(globals);
|
|
||||||
__builtins__=PyObject_GetItem(globals,__builtins___str);
|
|
||||||
if (!__builtins__)
|
|
||||||
goto err;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
PyErr_Clear();
|
|
||||||
|
|
||||||
if (!(standard_builtins ||
|
|
||||||
(standard_builtins=PyImport_ImportModule("__builtin__"))))
|
|
||||||
return NULL;
|
|
||||||
|
|
||||||
__builtins__=standard_builtins;
|
|
||||||
Py_INCREF(__builtins__);
|
|
||||||
globals = Py_BuildValue("{sO}", "__builtins__", __builtins__);
|
|
||||||
if (!globals)
|
|
||||||
goto err;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (PyDict_Check(__builtins__)) {
|
|
||||||
__import__=PyObject_GetItem(__builtins__,__import___str);
|
|
||||||
if (!__import__) goto err;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
__import__=PyObject_GetAttr(__builtins__,__import___str);
|
|
||||||
if (!__import__) goto err;
|
|
||||||
}
|
|
||||||
|
|
||||||
r=PyObject_CallFunction(__import__,"OOOO",
|
|
||||||
module_name, globals, globals, silly_list);
|
|
||||||
if (!r)
|
|
||||||
goto err;
|
|
||||||
|
|
||||||
Py_DECREF(globals);
|
|
||||||
Py_DECREF(__builtins__);
|
|
||||||
Py_DECREF(__import__);
|
|
||||||
|
|
||||||
return r;
|
|
||||||
err:
|
|
||||||
Py_XDECREF(globals);
|
|
||||||
Py_XDECREF(__builtins__);
|
|
||||||
Py_XDECREF(__import__);
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
static PyObject *
|
static PyObject *
|
||||||
whichmodule(PyObject *global, PyObject *global_name)
|
whichmodule(PyObject *global, PyObject *global_name)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue