From 814bd3e6401d42458de98e00ffd8bce47ebe8e8f Mon Sep 17 00:00:00 2001 From: blueloveTH Date: Wed, 6 Dec 2023 13:20:18 +0800 Subject: [PATCH] fix a bug --- src/vm.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/vm.cpp b/src/vm.cpp index 9e9ce78f..ee018809 100644 --- a/src/vm.cpp +++ b/src/vm.cpp @@ -565,14 +565,16 @@ PyObject* VM::new_module(Str name, Str package) { PyObject* obj = heap._new(tp_module); obj->attr().set(__name__, VAR(name)); 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 // it is because Module objects are not garbage collected if(_modules.contains(name)){ throw std::runtime_error(fmt("module ", name.escape(), " already exists").str()); } - // convert to fullname and set it into _modules - if(!package.empty()) name = package + "." + name; - obj->attr().set(__path__, VAR(name)); + // set it into _modules _modules.set(name, obj); return obj; }