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