Update to SQUIRREL 3.0.4
[supertux.git] / external / squirrel / squirrel / squserdata.h
old mode 100755 (executable)
new mode 100644 (file)
index 8fe0411..dea27ae
@@ -12,7 +12,7 @@ struct SQUserData : SQDelegable
        }\r
        static SQUserData* Create(SQSharedState *ss, SQInteger size)\r
        {\r
-               SQUserData* ud = (SQUserData*)SQ_MALLOC(sizeof(SQUserData)+(size-1));\r
+               SQUserData* ud = (SQUserData*)SQ_MALLOC(sq_aligning(sizeof(SQUserData))+size);\r
                new (ud) SQUserData(ss);\r
                ud->_size = size;\r
                ud->_typetag = 0;\r
@@ -21,18 +21,20 @@ struct SQUserData : SQDelegable
 #ifndef NO_GARBAGE_COLLECTOR\r
        void Mark(SQCollectable **chain);\r
        void Finalize(){SetDelegate(NULL);}\r
+       SQObjectType GetType(){ return OT_USERDATA;}\r
 #endif\r
        void Release() {\r
-               if (_hook) _hook(_val,_size);\r
-               SQInteger tsize = _size - 1;\r
+               if (_hook) _hook((SQUserPointer)sq_aligning(this + 1),_size);\r
+               SQInteger tsize = _size;\r
                this->~SQUserData();\r
-               SQ_FREE(this, sizeof(SQUserData) + tsize);\r
+               SQ_FREE(this, sq_aligning(sizeof(SQUserData)) + tsize);\r
        }\r
+       \r
                \r
        SQInteger _size;\r
        SQRELEASEHOOK _hook;\r
        SQUserPointer _typetag;\r
-       SQChar _val[1];\r
+       //SQChar _val[1];\r
 };\r
 \r
 #endif //_SQUSERDATA_H_\r