diff options
author | GriffinR <griffin.g.richards@gmail.com> | 2020-12-14 20:00:59 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-12-14 20:00:59 -0500 |
commit | 18a5feb413827ee5641e9a21e8e90ba0e9a90142 (patch) | |
tree | 5b486cd8f42cf734099c0e9a4a3aea37f33c30e6 /src/field_effect.c | |
parent | 6dea3374d2277468828c71ef1fb083d85cdcd2ff (diff) | |
parent | f7a729df3079041d3cc462a44919150f4ebdf19f (diff) |
Merge pull request #1269 from GriffinRichards/bugfix
Use BUGFIX for some inline fixes
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) |