}\r
static SQUserData* Create(SQSharedState *ss, SQInteger size)\r
{\r
- SQUserData* ud = (SQUserData*)SQ_MALLOC(sq_aligning(sizeof(SQUserData))+size);\r
+ SQUserData* ud = (SQUserData*)SQ_MALLOC(sizeof(SQUserData)+(size-1));\r
new (ud) SQUserData(ss);\r
ud->_size = size;\r
ud->_typetag = 0;\r
#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((SQUserPointer)sq_aligning(this + 1),_size);\r
- SQInteger tsize = _size;\r
+ if (_hook) _hook(_val,_size);\r
+ SQInteger tsize = _size - 1;\r
this->~SQUserData();\r
- SQ_FREE(this, sq_aligning(sizeof(SQUserData)) + tsize);\r
+ SQ_FREE(this, 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