diff --git a/src/__stl__.h b/src/__stl__.h index 5516d2ae..99fd3e8e 100644 --- a/src/__stl__.h +++ b/src/__stl__.h @@ -31,4 +31,4 @@ #define UNREACHABLE() throw std::runtime_error( __FILE__ + std::string(":") + std::to_string(__LINE__) + " UNREACHABLE()!"); #endif -#define PK_VERSION "0.4.6" \ No newline at end of file +#define PK_VERSION "0.4.7" \ No newline at end of file diff --git a/src/pocketpy.h b/src/pocketpy.h index 5d501034..0e0da8cb 100644 --- a/src/pocketpy.h +++ b/src/pocketpy.h @@ -650,8 +650,8 @@ void __addModuleJson(VM* vm){ void __addModuleMath(VM* vm){ PyVar mod = vm->newModule("math"); - vm->setAttr(mod, "pi", vm->PyFloat(3.14159265358979323846)); - vm->setAttr(mod, "e", vm->PyFloat(2.7182818284590452354)); + vm->setAttr(mod, "pi", vm->PyFloat(3.1415926535897932384)); + vm->setAttr(mod, "e" , vm->PyFloat(2.7182818284590452354)); vm->bindFunc(mod, "log", [](VM* vm, const pkpy::ArgList& args) { vm->__checkArgSize(args, 1); @@ -719,7 +719,7 @@ public: extern "C" { __EXPORT - /// Delete a class pointer allocated by `pkpy_xxx_xxx`. + /// Delete a pointer allocated by `pkpy_xxx_xxx`. /// It can be `VM*`, `REPL*`, `ThreadedVM*`, `char*`, etc. /// /// !!! @@ -756,8 +756,12 @@ extern "C" { char* pkpy_vm_get_global(VM* vm, const char* name){ auto it = vm->_main->attribs.find(name); if(it == vm->_main->attribs.end()) return nullptr; - _Str _json = vm->PyStr_AS_C(vm->asJson(it->second)); - return strdup(_json.c_str()); + try{ + _Str _json = vm->PyStr_AS_C(vm->asJson(it->second)); + return strdup(_json.c_str()); + }catch(...){ + return nullptr; + } } __EXPORT @@ -770,8 +774,12 @@ extern "C" { if(code == nullptr) return nullptr; PyVarOrNull ret = vm->exec(code); if(ret == nullptr) return nullptr; - _Str _json = vm->PyStr_AS_C(vm->asJson(ret)); - return strdup(_json.c_str()); + try{ + _Str _json = vm->PyStr_AS_C(vm->asJson(ret)); + return strdup(_json.c_str()); + }catch(...){ + return nullptr; + } } __EXPORT