Hi guys,app
I've found problems using the CCBReader when deploying my game to an iPhone 4.
There are several potential lines in CCBReader where the game will crash due to memory misalignment.ide
in CCBReader::readHeader()this
int magicBytes = *((int*)(this->mBytes + this->mCurrentByte));
code
should beget
int magicBytes;
unsigned char* pData = ( this->mBytes + this->mCurrentByte );
memcpy( &magicBytes, pData, sizeof( int ) );
it
in CCBReader::readFloat() there is something really dangerousio
float * pF = (float*)(this->mBytes + this->mCurrentByte);
float f = 0;
memcpy(&f, pF, sizeof(float));
ast
should beclass
float f;
unsigned char* pData = ( this->mBytes + this->mCurrentByte );
memcpy( &f, pData, sizeof( float ) );
sso
The ARM processor which is inside all iPhones, iPads, etc. Doesn't like memory
misalignment! so be careful doing castings with memory which could be misalignment
after the casting!
You can find more info about this issue here:
http://stackoverflow.com/questions/3243146/why-does-this-exc-bad-access-happen-with-long-long-and-not-with-int
http://stackoverflow.com/questions/7788216/exc-bad-access-and-char-pointer-to-float-pointer-cast