Fix/document possible division by zero in ConvertScaleParam

This commit is contained in:
Sierraffinity 2021-01-04 16:26:28 -08:00
parent b88922daea
commit 67a656a4df
2 changed files with 12 additions and 2 deletions

View File

@ -1319,8 +1319,18 @@ void ApplyAffineAnimFrameRelativeAndUpdateMatrix(u8 matrixNum, struct AffineAnim
s16 ConvertScaleParam(s16 scale) s16 ConvertScaleParam(s16 scale)
{ {
s16 ret;
s32 val = 0x10000; s32 val = 0x10000;
return val / scale; // UB: possible division by zero
#ifdef UBFIX
if (scale != 0)
ret = val / scale;
else
ret = 0;
#else
ret = val / scale;
#endif //UBFIX
return ret;
} }
void GetAffineAnimFrame(u8 matrixNum, struct Sprite *sprite, struct AffineAnimFrameCmd *frameCmd) void GetAffineAnimFrame(u8 matrixNum, struct Sprite *sprite, struct AffineAnimFrameCmd *frameCmd)

View File

@ -3042,7 +3042,7 @@ static void SpriteCB_PokedexListMonSprite(struct Sprite *sprite)
if (gSineTable[sprite->data[5] + 64] != 0) if (gSineTable[sprite->data[5] + 64] != 0)
var = 0x10000 / gSineTable[sprite->data[5] + 64]; var = 0x10000 / gSineTable[sprite->data[5] + 64];
else else
var = 0xFFFF; var = 0;
#else #else
var = 0x10000 / gSineTable[sprite->data[5] + 64]; var = 0x10000 / gSineTable[sprite->data[5] + 64];
#endif //UBFIX #endif //UBFIX