diff options
author | luckytyphlosion <10688458+luckytyphlosion@users.noreply.github.com> | 2020-12-16 14:51:21 -0500 |
---|---|---|
committer | luckytyphlosion <10688458+luckytyphlosion@users.noreply.github.com> | 2020-12-16 14:51:21 -0500 |
commit | 34fc9789c9d11464161aabf022eb270597c6778a (patch) | |
tree | d7f97e29db99b3983d2d50678dcc250da179d32d /src/field_effect.c | |
parent | cc5db41f30708c1cc2d33a46879c96a9404764a3 (diff) | |
parent | 49bdaeb940afc98e3f98b24c9a5afe1bb8d5d86b (diff) |
Merge branch 'master' of https://github.com/pret/pokeemerald into rebase-install-md
Diffstat (limited to 'src/field_effect.c')
-rw-r--r-- | src/field_effect.c | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/src/field_effect.c b/src/field_effect.c index 41f1a899c..5a18557eb 100644 --- a/src/field_effect.c +++ b/src/field_effect.c @@ -3846,7 +3846,6 @@ bool8 FldEff_MoveDeoxysRock(struct Sprite* sprite) static void Task_MoveDeoxysRock(u8 taskId) { - // BUG: Possible divide by zero s16 *data = gTasks[taskId].data; struct Sprite *sprite = &gSprites[data[1]]; switch (data[0]) @@ -3854,8 +3853,16 @@ static void Task_MoveDeoxysRock(u8 taskId) case 0: data[4] = sprite->pos1.x << 4; data[5] = sprite->pos1.y << 4; - data[6] = (data[2] * 16 - data[4]) / data[8]; - data[7] = (data[3] * 16 - data[5]) / data[8]; + + // UB: Possible divide by zero + #ifdef UBFIX + #define DIVISOR (data[8] ? data[8] : 1); + #else + #define DIVISOR (data[8]) + #endif + + data[6] = (data[2] * 16 - data[4]) / DIVISOR; + data[7] = (data[3] * 16 - data[5]) / DIVISOR; data[0]++; case 1: if (data[8] != 0) |