|
@@ -650,8 +650,8 @@ void __addModuleJson(VM* vm){
|
|
|
|
|
|
|
|
void __addModuleMath(VM* vm){
|
|
void __addModuleMath(VM* vm){
|
|
|
PyVar mod = vm->newModule("math");
|
|
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->bindFunc(mod, "log", [](VM* vm, const pkpy::ArgList& args) {
|
|
|
vm->__checkArgSize(args, 1);
|
|
vm->__checkArgSize(args, 1);
|
|
@@ -719,7 +719,7 @@ public:
|
|
|
|
|
|
|
|
extern "C" {
|
|
extern "C" {
|
|
|
__EXPORT
|
|
__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.
|
|
/// It can be `VM*`, `REPL*`, `ThreadedVM*`, `char*`, etc.
|
|
|
///
|
|
///
|
|
|
/// !!!
|
|
/// !!!
|
|
@@ -756,8 +756,12 @@ extern "C" {
|
|
|
char* pkpy_vm_get_global(VM* vm, const char* name){
|
|
char* pkpy_vm_get_global(VM* vm, const char* name){
|
|
|
auto it = vm->_main->attribs.find(name);
|
|
auto it = vm->_main->attribs.find(name);
|
|
|
if(it == vm->_main->attribs.end()) return nullptr;
|
|
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
|
|
__EXPORT
|
|
@@ -770,8 +774,12 @@ extern "C" {
|
|
|
if(code == nullptr) return nullptr;
|
|
if(code == nullptr) return nullptr;
|
|
|
PyVarOrNull ret = vm->exec(code);
|
|
PyVarOrNull ret = vm->exec(code);
|
|
|
if(ret == nullptr) return nullptr;
|
|
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
|
|
__EXPORT
|