mirror of
https://github.com/pocketpy/pocketpy
synced 2025-10-20 03:20:18 +00:00
fix a bug
This commit is contained in:
parent
62024cb132
commit
814bd3e640
@ -565,14 +565,16 @@ PyObject* VM::new_module(Str name, Str package) {
|
|||||||
PyObject* obj = heap._new<DummyModule>(tp_module);
|
PyObject* obj = heap._new<DummyModule>(tp_module);
|
||||||
obj->attr().set(__name__, VAR(name));
|
obj->attr().set(__name__, VAR(name));
|
||||||
obj->attr().set(__package__, VAR(package));
|
obj->attr().set(__package__, VAR(package));
|
||||||
|
// convert to fullname
|
||||||
|
if(!package.empty()) name = package + "." + name;
|
||||||
|
obj->attr().set(__path__, VAR(name));
|
||||||
|
|
||||||
// we do not allow override in order to avoid memory leak
|
// we do not allow override in order to avoid memory leak
|
||||||
// it is because Module objects are not garbage collected
|
// it is because Module objects are not garbage collected
|
||||||
if(_modules.contains(name)){
|
if(_modules.contains(name)){
|
||||||
throw std::runtime_error(fmt("module ", name.escape(), " already exists").str());
|
throw std::runtime_error(fmt("module ", name.escape(), " already exists").str());
|
||||||
}
|
}
|
||||||
// convert to fullname and set it into _modules
|
// set it into _modules
|
||||||
if(!package.empty()) name = package + "." + name;
|
|
||||||
obj->attr().set(__path__, VAR(name));
|
|
||||||
_modules.set(name, obj);
|
_modules.set(name, obj);
|
||||||
return obj;
|
return obj;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user