Update to Squirrel 3.0.6
[supertux.git] / external / squirrel / sqstdlib / sqstdstring.cpp
old mode 100755 (executable)
new mode 100644 (file)
index af84237..33316fa
@@ -65,7 +65,6 @@ static SQInteger validate_format(HSQUIRRELVM v, SQChar *fmt, const SQChar *src,
        return n;\r
 }\r
 \r
-\r
 SQRESULT sqstd_format(HSQUIRRELVM v,SQInteger nformatstringidx,SQInteger *outlen,SQChar **output)\r
 {\r
        const SQChar *format;\r
@@ -103,7 +102,21 @@ SQRESULT sqstd_format(HSQUIRRELVM v,SQInteger nformatstringidx,SQInteger *outlen
                                addlen = (sq_getsize(v,nparam)*sizeof(SQChar))+((w+1)*sizeof(SQChar));\r
                                valtype = 's';\r
                                break;\r
-                       case 'i': case 'd': case 'c':case 'o':  case 'u':  case 'x':  case 'X':\r
+                       case 'i': case 'd': case 'o': case 'u':  case 'x':  case 'X':\r
+#ifdef _SQ64\r
+                               {\r
+                               size_t flen = scstrlen(fmt);\r
+                               SQInteger fpos = flen - 1;\r
+                               SQChar f = fmt[fpos];\r
+                               SQChar *prec = (SQChar *)_PRINT_INT_PREC;\r
+                               while(*prec != _SC('\0')) {\r
+                                       fmt[fpos++] = *prec++;\r
+                               }\r
+                               fmt[fpos++] = f;\r
+                               fmt[fpos++] = _SC('\0');\r
+                               }\r
+#endif\r
+                       case 'c':\r
                                if(SQ_FAILED(sq_getinteger(v,nparam,&ti))) \r
                                        return sq_throwerror(v,_SC("integer expected for the specified format"));\r
                                addlen = (ADDITIONAL_FORMAT_SPACE)+((w+1)*sizeof(SQChar));\r
@@ -159,8 +172,8 @@ static void __strip_r(const SQChar *str,SQInteger len,const SQChar **end)
                return;\r
        }\r
        const SQChar *t = &str[len-1];\r
-       while(t != str && scisspace(*t)) { t--; }\r
-       *end = t+1;\r
+       while(t >= str && scisspace(*t)) { t--; }\r
+       *end = t + 1;\r
 }\r
 \r
 static SQInteger _string_strip(HSQUIRRELVM v)\r
@@ -321,6 +334,7 @@ static SQRegFunction rexobj_funcs[]={
        _DECL_REX_FUNC(_typeof,1,_SC("x")),\r
        {0,0}\r
 };\r
+#undef _DECL_REX_FUNC\r
 \r
 #define _DECL_FUNC(name,nparams,pmask) {_SC(#name),_string_##name,nparams,pmask}\r
 static SQRegFunction stringlib_funcs[]={\r
@@ -331,6 +345,7 @@ static SQRegFunction stringlib_funcs[]={
        _DECL_FUNC(split,3,_SC(".ss")),\r
        {0,0}\r
 };\r
+#undef _DECL_FUNC\r
 \r
 \r
 SQInteger sqstd_register_stringlib(HSQUIRRELVM v)\r
@@ -344,10 +359,10 @@ SQInteger sqstd_register_stringlib(HSQUIRRELVM v)
                sq_newclosure(v,f.f,0);\r
                sq_setparamscheck(v,f.nparamscheck,f.typemask);\r
                sq_setnativeclosurename(v,-1,f.name);\r
-               sq_createslot(v,-3);\r
+               sq_newslot(v,-3,SQFalse);\r
                i++;\r
        }\r
-       sq_createslot(v,-3);\r
+       sq_newslot(v,-3,SQFalse);\r
 \r
        i = 0;\r
        while(stringlib_funcs[i].name!=0)\r
@@ -356,7 +371,7 @@ SQInteger sqstd_register_stringlib(HSQUIRRELVM v)
                sq_newclosure(v,stringlib_funcs[i].f,0);\r
                sq_setparamscheck(v,stringlib_funcs[i].nparamscheck,stringlib_funcs[i].typemask);\r
                sq_setnativeclosurename(v,-1,stringlib_funcs[i].name);\r
-               sq_createslot(v,-3);\r
+               sq_newslot(v,-3,SQFalse);\r
                i++;\r
        }\r
        return 1;\r