mirror of
https://github.com/Ninjdai1/pokeemerald.git
synced 2024-12-26 11:44:17 +01:00
Merge pull request #1280 from Sierraffinity/master
Add fixes for undefined behavior with modern compiler
This commit is contained in:
commit
e1fd2f2a89
@ -2275,7 +2275,18 @@ u8 CameraObjectGetFollowedObjectId(void)
|
||||
|
||||
void CameraObjectReset2(void)
|
||||
{
|
||||
// UB: Possible null dereference
|
||||
#ifdef UBFIX
|
||||
struct Sprite *cameraObject;
|
||||
|
||||
cameraObject = FindCameraObject();
|
||||
if (cameraObject != NULL)
|
||||
{
|
||||
cameraObject->data[1] = 2;
|
||||
}
|
||||
#else
|
||||
FindCameraObject()->data[1] = 2;
|
||||
#endif // UBFIX
|
||||
}
|
||||
|
||||
u8 CopySprite(struct Sprite *sprite, s16 x, s16 y, u8 subpriority)
|
||||
|
@ -797,15 +797,33 @@ bool8 CameraMove(int x, int y)
|
||||
struct MapConnection *sub_8088950(u8 direction, int x, int y)
|
||||
{
|
||||
int count;
|
||||
struct MapConnection *connection;
|
||||
int i;
|
||||
count = gMapHeader.connections->count;
|
||||
connection = gMapHeader.connections->connections;
|
||||
struct MapConnection *connection;
|
||||
const struct MapConnections *connections = gMapHeader.connections;
|
||||
// UB: Multiple possible null dereferences
|
||||
#ifdef UBFIX
|
||||
if (connections != NULL)
|
||||
{
|
||||
count = connections->count;
|
||||
connection = connections->connections;
|
||||
if (connection != NULL)
|
||||
{
|
||||
for (i = 0; i < count; i++, connection++)
|
||||
{
|
||||
if (connection->direction == direction && sub_80889A8(direction, x, y, connection) == TRUE)
|
||||
return connection;
|
||||
}
|
||||
}
|
||||
}
|
||||
#else
|
||||
count = connections->count;
|
||||
connection = connections->connections;
|
||||
for (i = 0; i < count; i++, connection++)
|
||||
{
|
||||
if (connection->direction == direction && sub_80889A8(direction, x, y, connection) == TRUE)
|
||||
return connection;
|
||||
}
|
||||
#endif
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
@ -3037,7 +3037,15 @@ static void SpriteCB_PokedexListMonSprite(struct Sprite *sprite)
|
||||
u32 var;
|
||||
|
||||
sprite->pos2.y = gSineTable[(u8)sprite->data[5]] * 76 / 256;
|
||||
// UB: possible division by zero
|
||||
#ifdef UBFIX
|
||||
if (gSineTable[sprite->data[5] + 64] != 0)
|
||||
var = 0x10000 / gSineTable[sprite->data[5] + 64];
|
||||
else
|
||||
var = 0xFFFF;
|
||||
#else
|
||||
var = 0x10000 / gSineTable[sprite->data[5] + 64];
|
||||
#endif //UBFIX
|
||||
if (var > 0xFFFF)
|
||||
var = 0xFFFF;
|
||||
SetOamMatrix(sprite->data[1] + 1, 0x100, 0, 0, var);
|
||||
|
@ -8408,8 +8408,13 @@ static void sub_80D08CC(void)
|
||||
for (j = sMoveMonsPtr->minRow; j < rowCount; j++)
|
||||
{
|
||||
struct BoxPokemon *boxMon = GetBoxedMonPtr(boxId, boxPosition);
|
||||
|
||||
// UB: possible null dereference
|
||||
#ifdef UBFIX
|
||||
if (boxMon != NULL)
|
||||
sMoveMonsPtr->boxMons[monArrayId] = *boxMon;
|
||||
#else
|
||||
sMoveMonsPtr->boxMons[monArrayId] = *boxMon;
|
||||
#endif
|
||||
monArrayId++;
|
||||
boxPosition++;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user