Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
home:lafenghu
squirrel
squirrel-aliasing.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File squirrel-aliasing.patch of Package squirrel
Index: squirrel/sqvm.cpp =================================================================== --- squirrel/sqvm.cpp.orig 2011-11-10 18:42:18.999089829 +0100 +++ squirrel/sqvm.cpp 2011-11-10 18:44:06.208573541 +0100 @@ -695,7 +695,11 @@ exception_restore: #else TARGET = (SQInteger)((SQUnsignedInteger32)arg1); continue; #endif - case _OP_LOADFLOAT: TARGET = *((SQFloat *)&arg1); continue; + case _OP_LOADFLOAT: { + union{ const SQInt32 *sqi32p; const SQFloat *sqfp; }pun = { &arg1 }; + TARGET = *pun.sqfp; + } + continue; case _OP_DLOAD: TARGET = ci->_literals[arg1]; STK(arg2) = ci->_literals[arg3];continue; case _OP_TAILCALL:{ SQObjectPtr &t = STK(arg1); @@ -881,10 +885,12 @@ exception_restore: val._unVal.nInteger = (SQInteger)((SQUnsignedInteger32)arg1); #endif break; - case AAT_FLOAT: - val._type = OT_FLOAT; - val._unVal.fFloat = *((SQFloat *)&arg1); - break; + case AAT_FLOAT: { + union{ const SQInt32 *sqi32p; const SQFloat *sqfp; }pun = { &arg1 }; + val._type = OT_FLOAT; + val._unVal.fFloat = *pun.sqfp; + break; + } case AAT_BOOL: val._type = OT_BOOL; val._unVal.nInteger = arg1; Index: squirrel/sqcompiler.cpp =================================================================== --- squirrel/sqcompiler.cpp.orig 2011-11-10 18:42:18.999089829 +0100 +++ squirrel/sqcompiler.cpp 2011-11-10 18:44:06.214573456 +0100 @@ -869,7 +869,9 @@ public: target = _fs->PushTarget(); } if(sizeof(SQFloat) == sizeof(SQInt32)) { - _fs->AddInstruction(_OP_LOADFLOAT, target,*((SQInt32 *)&value)); + union{SQFloat *sqfp; SQInt32 *sqi32p; }pun = { &value }; + + _fs->AddInstruction(_OP_LOADFLOAT, target, *pun.sqi32p); } else { _fs->AddInstruction(_OP_LOAD, target, _fs->GetNumericConstant(value)); Index: sqstdlib/sqstdblob.cpp =================================================================== --- sqstdlib/sqstdblob.cpp.orig 2011-11-10 18:42:19.000089815 +0100 +++ sqstdlib/sqstdblob.cpp 2011-11-10 18:44:06.227573272 +0100 @@ -174,16 +174,18 @@ static SQRegFunction _blob_methods[] = { static SQInteger _g_blob_casti2f(HSQUIRRELVM v) { SQInteger i; + union{ SQInteger *sqip; SQFloat *sqfp;}pun = { &i }; sq_getinteger(v,2,&i); - sq_pushfloat(v,*((SQFloat *)&i)); + sq_pushfloat(v,*pun.sqfp); return 1; } static SQInteger _g_blob_castf2i(HSQUIRRELVM v) { SQFloat f; + union{ SQFloat *sqfp; SQInteger *sqip;}pun = { &f }; sq_getfloat(v,2,&f); - sq_pushinteger(v,*((SQInteger *)&f)); + sq_pushinteger(v,*pun.sqip); return 1; }
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor