blueloveTH 3 ani în urmă
părinte
comite
991c4926d5
2 a modificat fișierele cu 16 adăugiri și 8 ștergeri
  1. 1 1
      src/__stl__.h
  2. 15 7
      src/pocketpy.h

+ 1 - 1
src/__stl__.h

@@ -31,4 +31,4 @@
 #define UNREACHABLE() throw std::runtime_error( __FILE__ + std::string(":") + std::to_string(__LINE__) + " UNREACHABLE()!");
 #define UNREACHABLE() throw std::runtime_error( __FILE__ + std::string(":") + std::to_string(__LINE__) + " UNREACHABLE()!");
 #endif
 #endif
 
 
-#define PK_VERSION "0.4.6"
+#define PK_VERSION "0.4.7"

+ 15 - 7
src/pocketpy.h

@@ -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