Actually initialize __main__.__loader__ with loader instances, not the corresponding type objects
This commit is contained in:
parent
8dbe5b5568
commit
3f94cbf9eb
|
@ -37,7 +37,8 @@ f()
|
||||||
assertEqual(result, ['Top level assignment', 'Lower level reference'])
|
assertEqual(result, ['Top level assignment', 'Lower level reference'])
|
||||||
# Check population of magic variables
|
# Check population of magic variables
|
||||||
assertEqual(__name__, '__main__')
|
assertEqual(__name__, '__main__')
|
||||||
_loader = __loader__ if isinstance(__loader__, type) else type(__loader__)
|
from importlib.machinery import BuiltinImporter
|
||||||
|
_loader = __loader__ if __loader__ is BuiltinImporter else type(__loader__)
|
||||||
print('__loader__==%a' % _loader)
|
print('__loader__==%a' % _loader)
|
||||||
print('__file__==%a' % __file__)
|
print('__file__==%a' % __file__)
|
||||||
assertEqual(__cached__, None)
|
assertEqual(__cached__, None)
|
||||||
|
|
|
@ -1355,11 +1355,15 @@ set_main_loader(PyObject *d, const char *filename, const char *loader_name)
|
||||||
{
|
{
|
||||||
PyInterpreterState *interp;
|
PyInterpreterState *interp;
|
||||||
PyThreadState *tstate;
|
PyThreadState *tstate;
|
||||||
PyObject *loader;
|
PyObject *loader_type, *loader;
|
||||||
/* Get current thread state and interpreter pointer */
|
/* Get current thread state and interpreter pointer */
|
||||||
tstate = PyThreadState_GET();
|
tstate = PyThreadState_GET();
|
||||||
interp = tstate->interp;
|
interp = tstate->interp;
|
||||||
loader = PyObject_GetAttrString(interp->importlib, loader_name);
|
loader_type = PyObject_GetAttrString(interp->importlib, loader_name);
|
||||||
|
if (loader_type == NULL) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
loader = PyObject_CallFunction(loader_type, "ss", "__main__", filename);
|
||||||
if (loader == NULL ||
|
if (loader == NULL ||
|
||||||
(PyDict_SetItemString(d, "__loader__", loader) < 0)) {
|
(PyDict_SetItemString(d, "__loader__", loader) < 0)) {
|
||||||
return -1;
|
return -1;
|
||||||
|
|
Loading…
Reference in New Issue