Update to SQUIRREL 3.0.4
[supertux.git] / external / squirrel / sqstdlib / sqstdstream.cpp
old mode 100755 (executable)
new mode 100644 (file)
index 606a9b8..1b7a08f
@@ -13,7 +13,7 @@
        SQStream *self = NULL; \\r
        if(SQ_FAILED(sq_getinstanceup(v,1,(SQUserPointer*)&self,(SQUserPointer)SQSTD_STREAM_TYPE_TAG))) \\r
                return sq_throwerror(v,_SC("invalid type tag")); \\r
-       if(!self->IsValid())  \\r
+       if(!self || !self->IsValid())  \\r
                return sq_throwerror(v,_SC("the stream is invalid"));\r
 \r
 SQInteger _stream_readblob(HSQUIRRELVM v)\r
@@ -233,6 +233,11 @@ SQInteger _stream_eos(HSQUIRRELVM v)
        return 1;\r
 }\r
 \r
+ SQInteger _stream__cloned(HSQUIRRELVM v)\r
+ {\r
+        return sq_throwerror(v,_SC("this object cannot be cloned"));\r
+ }\r
+\r
 static SQRegFunction _stream_methods[] = {\r
        _DECL_STREAM_FUNC(readblob,2,_SC("xn")),\r
        _DECL_STREAM_FUNC(readn,2,_SC("xn")),\r
@@ -243,6 +248,7 @@ static SQRegFunction _stream_methods[] = {
        _DECL_STREAM_FUNC(len,1,_SC("x")),\r
        _DECL_STREAM_FUNC(eos,1,_SC("x")),\r
        _DECL_STREAM_FUNC(flush,1,_SC("x")),\r
+       _DECL_STREAM_FUNC(_cloned,0,NULL),\r
        {0,0}\r
 };\r
 \r
@@ -260,15 +266,15 @@ void init_streamclass(HSQUIRRELVM v)
                        sq_pushstring(v,f.name,-1);\r
                        sq_newclosure(v,f.f,0);\r
                        sq_setparamscheck(v,f.nparamscheck,f.typemask);\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
                sq_pushroottable(v);\r
                sq_pushstring(v,_SC("stream"),-1);\r
                sq_pushstring(v,_SC("std_stream"),-1);\r
                sq_get(v,-4);\r
-               sq_createslot(v,-3);\r
+               sq_newslot(v,-3,SQFalse);\r
                sq_pop(v,1);\r
        }\r
        else {\r
@@ -297,10 +303,10 @@ SQRESULT declare_stream(HSQUIRRELVM v,const SQChar* name,SQUserPointer typetag,c
                        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
                sq_pop(v,1);\r
                \r
                i = 0;\r
@@ -311,7 +317,7 @@ SQRESULT declare_stream(HSQUIRRELVM v,const SQChar* name,SQUserPointer typetag,c
                        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
                //register the class in the target table\r
@@ -320,7 +326,7 @@ SQRESULT declare_stream(HSQUIRRELVM v,const SQChar* name,SQUserPointer typetag,c
                sq_pushstring(v,reg_name,-1);\r
                sq_get(v,-2);\r
                sq_remove(v,-2);\r
-               sq_createslot(v,-3);\r
+               sq_newslot(v,-3,SQFalse);\r
 \r
                sq_settop(v,top);\r
                return SQ_OK;\r