Fix UB in battle_anim_ground (#2273)
Some checks failed
CI / build (push) Has been cancelled

gBattleAnimArgs is 8 elements, not 15.

Co-authored-by: AZero13 <83477269+SiliconA-Z@users.noreply.github.com>
This commit is contained in:
AZero13
2026-06-17 15:36:43 -04:00
committed by GitHub
parent 46b1988a20
commit c2dcc629fd
2 changed files with 17 additions and 7 deletions

View File

@@ -3318,8 +3318,14 @@ Move_MILK_DRINK:
Move_MAGNITUDE:
createvisualtask AnimTask_IsPowerOver99, 2
waitforvisualfinish
.ifdef UBFIX
jumpreteq FALSE, MagnitudeRegular
jumpreteq TRUE, MagnitudeIntense
.else
jumpargeq 15, FALSE, MagnitudeRegular
jumpargeq 15, TRUE, MagnitudeIntense
.endif
MagnitudeEnd:
end
MagnitudeRegular:

View File

@@ -415,7 +415,7 @@ static void AnimTask_DigSetVisibleUnderground(u8 taskId)
static void AnimTask_DigRiseUpFromHole(u8 taskId)
{
u8 var0;
u8 y;
struct Task *task = &gTasks[taskId];
switch (task->data[0])
@@ -428,9 +428,9 @@ static void AnimTask_DigRiseUpFromHole(u8 taskId)
else
task->data[12] = gBattle_BG2_X;
var0 = GetBattlerYCoordWithElevation(gBattleAnimAttacker);
task->data[14] = var0 - 32;
task->data[15] = var0 + 32;
y = GetBattlerYCoordWithElevation(gBattleAnimAttacker);
task->data[14] = y - 32;
task->data[15] = y + 32;
task->data[0]++;
break;
case 1:
@@ -503,7 +503,7 @@ static void SetDigScanlineEffect(u8 useBG1, s16 y, s16 endY)
// arg 5: duration
void AnimDirtPlumeParticle(struct Sprite *sprite)
{
s8 battler;
u16 battler; // Should be u8.
s16 xOffset;
if (gBattleAnimArgs[0] == 0)
@@ -542,7 +542,7 @@ static void AnimDirtPlumeParticle_Step(struct Sprite *sprite)
// arg 2: duration
static void AnimDigDirtMound(struct Sprite *sprite)
{
s8 battler;
u8 battler;
if (gBattleAnimArgs[0] == 0)
battler = gBattleAnimAttacker;
@@ -708,7 +708,7 @@ static void AnimTask_ShakeBattlers(u8 taskId)
static void SetBattlersXOffsetForShake(struct Task *task)
{
u16 i;
u16 xOffset;
s16 xOffset;
if ((task->tTimer & 1) == 0)
xOffset = (task->tHorizOffset / 2) + (task->tHorizOffset & 1);
@@ -733,7 +733,11 @@ static void SetBattlersXOffsetForShake(struct Task *task)
void AnimTask_IsPowerOver99(u8 taskId)
{
#ifdef UBFIX
gBattleAnimArgs[7] = gAnimMovePower > 99;
#else
gBattleAnimArgs[15] = gAnimMovePower > 99;
#endif
DestroyAnimVisualTask(taskId);
}