Skip to content

Commit 06e1076

Browse files
committed
Fix hooks passing references to local variables to registers
1 parent 3d82ca5 commit 06e1076

File tree

2 files changed

+9
-14
lines changed

2 files changed

+9
-14
lines changed

src/Ext/EBolt/Hooks.cpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -155,12 +155,13 @@ DEFINE_HOOK(0x4C285D, EBolt_DrawAll_BurstIndex, 0x5)
155155

156156
GET(TechnoClass*, pTechno, ECX);
157157
GET_STACK(EBolt*, pThis, STACK_OFFSET(0x34, -0x24));
158+
LEA_STACK(CoordStruct*, pCoords, STACK_OFFSET(0x34, -0xC));
158159

159160
int burstIndex = pTechno->CurrentBurstIndex;
160161
pTechno->CurrentBurstIndex = EBoltExt::ExtMap.Find(pThis)->BurstIndex;
161-
auto const fireCoords = pTechno->GetFLH(pThis->WeaponSlot, CoordStruct::Empty);
162+
pTechno->GetFLH(pCoords, pThis->WeaponSlot, CoordStruct::Empty);
162163
pTechno->CurrentBurstIndex = burstIndex;
163-
R->EAX(&fireCoords);
164+
R->EAX(pCoords);
164165

165166
return SkipGameCode;
166167
}

src/Misc/Hooks.BugFixes.cpp

Lines changed: 6 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -567,14 +567,12 @@ namespace FetchBomb
567567
DEFINE_HOOK(0x438771, BombClass_Detonate_SetContext, 0x6)
568568
{
569569
GET(BombClass*, pThis, ESI);
570+
GET(CoordStruct*, pCoords, EDX);
570571

571572
FetchBomb::pThisBomb = pThis;
572573

573574
if (RulesExt::Global()->IvanBombAttachToCenter)
574-
{
575-
CoordStruct coords = pThis->Target->GetCenterCoords();
576-
R->EDX(&coords);
577-
}
575+
*pCoords = pThis->Target->GetCenterCoords();
578576

579577
return 0;
580578
}
@@ -624,12 +622,10 @@ DEFINE_FUNCTION_JUMP(CALL, 0x4387A3, _BombClass_Detonate_DamageArea);
624622
DEFINE_HOOK(0x6F5201, TechnoClass_DrawExtras_IvanBombImage, 0x6)
625623
{
626624
GET(TechnoClass*, pThis, EBP);
625+
GET(CoordStruct*, pCoords, EAX);
627626

628627
if (RulesExt::Global()->IvanBombAttachToCenter)
629-
{
630-
auto coords = pThis->GetCenterCoords();
631-
R->EAX(&coords);
632-
}
628+
*pCoords = pThis->GetCenterCoords();
633629

634630
return 0;
635631
}
@@ -653,12 +649,10 @@ DEFINE_HOOK(0x43D874, BuildingClass_Draw_BuildupBibShape, 0x6)
653649
DEFINE_HOOK(0x70BCE6, TechnoClass_GetTargetCoords_BuildingFix, 0x6)
654650
{
655651
GET(TechnoClass*, pThis, ESI);
652+
GET(CoordStruct*, pCoords, EAX);
656653

657654
if (const auto pBuilding = abstract_cast<BuildingClass*>(pThis->Target))
658-
{
659-
const auto coords = pBuilding->GetTargetCoords();
660-
R->EAX(&coords);
661-
}
655+
*pCoords = pBuilding->GetTargetCoords();
662656

663657
return 0;
664658
}

0 commit comments

Comments
 (0)