Skip to content

Commit 92890e8

Browse files
authored
Fix building / engineSetPoolCapacity crashes (#3625)
* Fix crash with engineSetPoolCapacity
1 parent 1532130 commit 92890e8

File tree

4 files changed

+5
-9
lines changed

4 files changed

+5
-9
lines changed

Client/game_sa/CGameSA.cpp

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1005,18 +1005,14 @@ void CGameSA::GetShaderReplacementStats(SShaderReplacementStats& outStats)
10051005
m_pRenderWare->GetShaderReplacementStats(outStats);
10061006
}
10071007

1008-
void CGameSA::RemoveAllBuildings(bool clearBuildingRemoval)
1008+
void CGameSA::RemoveAllBuildings()
10091009
{
10101010
m_pIplStore->SetDynamicIplStreamingEnabled(false);
10111011

10121012
m_pPools->GetDummyPool().RemoveAllBuildingLods();
10131013
m_pPools->GetBuildingsPool().RemoveAllBuildings();
10141014

10151015
auto pBuildingRemoval = static_cast<CBuildingRemovalSA*>(m_pBuildingRemoval);
1016-
if (clearBuildingRemoval)
1017-
{
1018-
pBuildingRemoval->ClearRemovedBuildingLists();
1019-
}
10201016
pBuildingRemoval->DropCaches();
10211017

10221018
m_isBuildingsRemoved = true;
@@ -1036,7 +1032,7 @@ bool CGameSA::SetBuildingPoolSize(size_t size)
10361032
const bool shouldRemoveBuilding = !m_isBuildingsRemoved;
10371033
if (shouldRemoveBuilding)
10381034
{
1039-
RemoveAllBuildings(false);
1035+
RemoveAllBuildings();
10401036
}
10411037
else
10421038
{

Client/game_sa/CGameSA.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -303,7 +303,7 @@ class CGameSA : public CGame
303303
PostWeaponFireHandler* m_pPostWeaponFireHandler;
304304
TaskSimpleBeHitHandler* m_pTaskSimpleBeHitHandler;
305305

306-
void RemoveAllBuildings(bool clearBuildingRemoval = true);
306+
void RemoveAllBuildings();
307307
void RestoreGameBuildings();
308308

309309
bool SetBuildingPoolSize(size_t size);

Client/mods/deathmatch/logic/CClientBuilding.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -145,7 +145,7 @@ void CClientBuilding::Destroy()
145145
if (!m_pBuilding)
146146
return;
147147

148-
if (m_pHighBuilding)
148+
if (m_pHighBuilding && m_pHighBuilding->IsValid())
149149
{
150150
m_pHighBuilding->GetBuildingEntity()->SetLod(nullptr);
151151
}

Client/sdk/game/CGame.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -268,7 +268,7 @@ class __declspec(novtable) CGame
268268
virtual int32_t GetBaseIDforSCM() = 0;
269269
virtual int32_t GetCountOfAllFileIDs() = 0;
270270

271-
virtual void RemoveAllBuildings(bool clearBuildingRemoval = true) = 0;
271+
virtual void RemoveAllBuildings() = 0;
272272
virtual void RestoreGameBuildings() = 0;
273273

274274
virtual bool SetBuildingPoolSize(size_t size) = 0;

0 commit comments

Comments
 (0)