From 4268cff072db6c8163ddd2f9494c7a4b7276a2e3 Mon Sep 17 00:00:00 2001 From: blueloveTH Date: Fri, 7 Jun 2024 21:14:33 +0800 Subject: [PATCH] fix `py_exec` --- src/interpreter/vm.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/interpreter/vm.cpp b/src/interpreter/vm.cpp index a335131c..1c0b452d 100644 --- a/src/interpreter/vm.cpp +++ b/src/interpreter/vm.cpp @@ -553,10 +553,11 @@ i64 VM::py_hash(PyVar obj) { } PyVar VM::__py_exec_internal(const CodeObject_& code, PyVar globals, PyVar locals) { - Frame* frame = &vm->callstack.top(); + Frame* frame = nullptr; + if(!callstack.empty()) frame = &callstack.top(); // fast path - if(globals == vm->None && locals == vm->None) { + if(frame && globals == vm->None && locals == vm->None) { return vm->_exec(code.get(), frame->_module, frame->_callable, frame->_locals); } @@ -568,7 +569,7 @@ PyVar VM::__py_exec_internal(const CodeObject_& code, PyVar globals, PyVar local NameDict_ locals_closure = nullptr; Dict* locals_dict = nullptr; - if(globals == vm->None) { + if(frame && globals == vm->None) { globals_obj = frame->_module; } else { if(is_type(globals, VM::tp_mappingproxy)) {