[sr-dev] git:master:49e80dbe: app_squirrel: updated squirrel interpreter to latest git version

Daniel-Constantin Mierla miconda at gmail.com
Sun Jun 7 19:17:56 CEST 2020


Module: kamailio
Branch: master
Commit: 49e80dbe4b47f3252445fbad6e12d7150304f5a3
URL: https://github.com/kamailio/kamailio/commit/49e80dbe4b47f3252445fbad6e12d7150304f5a3

Author: Daniel-Constantin Mierla <miconda at gmail.com>
Committer: Daniel-Constantin Mierla <miconda at gmail.com>
Date: 2020-06-07T19:17:32+02:00

app_squirrel: updated squirrel interpreter to latest git version

---

Modified: src/modules/app_sqlang/squirrel/sqstdlib/sqstdstring.cpp
Modified: src/modules/app_sqlang/squirrel/sqstdlib/sqstdsystem.cpp
Modified: src/modules/app_sqlang/squirrel/squirrel/sqvm.cpp

---

Diff:  https://github.com/kamailio/kamailio/commit/49e80dbe4b47f3252445fbad6e12d7150304f5a3.diff
Patch: https://github.com/kamailio/kamailio/commit/49e80dbe4b47f3252445fbad6e12d7150304f5a3.patch

---

diff --git a/src/modules/app_sqlang/squirrel/sqstdlib/sqstdstring.cpp b/src/modules/app_sqlang/squirrel/sqstdlib/sqstdstring.cpp
index 7f7599bbfb..919bd9e924 100644
--- a/src/modules/app_sqlang/squirrel/sqstdlib/sqstdstring.cpp
+++ b/src/modules/app_sqlang/squirrel/sqstdlib/sqstdstring.cpp
@@ -181,7 +181,7 @@ static SQInteger _string_printf(HSQUIRRELVM v)
         return -1;
 
     SQPRINTFUNCTION printfunc = sq_getprintfunc(v);
-    if(printfunc) printfunc(v,dest);
+    if(printfunc) printfunc(v,_SC("%s"),dest);
 
     return 0;
 }
diff --git a/src/modules/app_sqlang/squirrel/sqstdlib/sqstdsystem.cpp b/src/modules/app_sqlang/squirrel/sqstdlib/sqstdsystem.cpp
index b008a44d5e..d326be1af9 100644
--- a/src/modules/app_sqlang/squirrel/sqstdlib/sqstdsystem.cpp
+++ b/src/modules/app_sqlang/squirrel/sqstdlib/sqstdsystem.cpp
@@ -19,6 +19,10 @@
 #define scremove remove
 #define screname rename
 #endif
+#ifdef IOS
+	#include <spawn.h>
+	extern char **environ;
+#endif
 
 static SQInteger _system_getenv(HSQUIRRELVM v)
 {
@@ -30,18 +34,22 @@ static SQInteger _system_getenv(HSQUIRRELVM v)
     return 0;
 }
 
-
 static SQInteger _system_system(HSQUIRRELVM v)
 {
     const SQChar *s;
     if(SQ_SUCCEEDED(sq_getstring(v,2,&s))){
-        sq_pushinteger(v,scsystem(s));
+	#ifdef IOS
+		pid_t pid;
+		posix_spawn(&pid, s, NULL, NULL, NULL, environ);
+		sq_pushinteger(v, 0);
+	#else
+	        sq_pushinteger(v,scsystem(s));
+	#endif
         return 1;
     }
     return sq_throwerror(v,_SC("wrong param"));
 }
 
-
 static SQInteger _system_clock(HSQUIRRELVM v)
 {
     sq_pushfloat(v,((SQFloat)clock())/(SQFloat)CLOCKS_PER_SEC);
diff --git a/src/modules/app_sqlang/squirrel/squirrel/sqvm.cpp b/src/modules/app_sqlang/squirrel/squirrel/sqvm.cpp
index b39be72a77..dcf823d735 100644
--- a/src/modules/app_sqlang/squirrel/squirrel/sqvm.cpp
+++ b/src/modules/app_sqlang/squirrel/squirrel/sqvm.cpp
@@ -671,7 +671,7 @@ bool SQVM::IsFalse(SQObjectPtr &o)
 #if !defined(SQUSEDOUBLE) || (defined(SQUSEDOUBLE) && defined(_SQ64))
         || (_integer(o) == 0) )  //OT_NULL|OT_INTEGER|OT_BOOL
 #else
-        || (((type(o) != OT_FLOAT) && (_integer(o) == 0))) )  //OT_NULL|OT_INTEGER|OT_BOOL
+        || (((sq_type(o) != OT_FLOAT) && (_integer(o) == 0))) )  //OT_NULL|OT_INTEGER|OT_BOOL
 #endif
     {
         return true;
@@ -1605,6 +1605,7 @@ SQInteger prevstackbase = _stackbase;
                    }
         break;
     default:
+        Raise_Error(_SC("attempt to call '%s'"), GetTypeName(closure));
         return false;
     }
 #ifdef _DEBUG




More information about the sr-dev mailing list