Skip to content

Commit dd35e7c

Browse files
Fix: Handle NULL GameSpyConfig during RankPoints initialization
1 parent 4b359f0 commit dd35e7c

2 files changed

Lines changed: 42 additions & 11 deletions

File tree

‎Generals/Code/GameEngine/Source/GameClient/GUI/GUICallbacks/Menus/PopupPlayerInfo.cpp‎

Lines changed: 27 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -245,16 +245,33 @@ void GetAdditionalDisconnectsFromUserFile(PSPlayerStats *stats)
245245
// default values
246246
RankPoints::RankPoints(void)
247247
{
248-
m_ranks[RANK_PRIVATE] = 0;
249-
m_ranks[RANK_CORPORAL] = TheGameSpyConfig->getPointsForRank(RANK_CORPORAL); // 5
250-
m_ranks[RANK_SERGEANT] = TheGameSpyConfig->getPointsForRank(RANK_SERGEANT); // 10
251-
m_ranks[RANK_LIEUTENANT] = TheGameSpyConfig->getPointsForRank(RANK_LIEUTENANT); // 20
252-
m_ranks[RANK_CAPTAIN] = TheGameSpyConfig->getPointsForRank(RANK_CAPTAIN); // 50
253-
m_ranks[RANK_MAJOR] = TheGameSpyConfig->getPointsForRank(RANK_MAJOR); // 100
254-
m_ranks[RANK_COLONEL] = TheGameSpyConfig->getPointsForRank(RANK_COLONEL); // 200
255-
m_ranks[RANK_BRIGADIER_GENERAL] = TheGameSpyConfig->getPointsForRank(RANK_BRIGADIER_GENERAL); // 500
256-
m_ranks[RANK_GENERAL] = TheGameSpyConfig->getPointsForRank(RANK_GENERAL); // 1000
257-
m_ranks[RANK_COMMANDER_IN_CHIEF] = TheGameSpyConfig->getPointsForRank(RANK_COMMANDER_IN_CHIEF); // 2000
248+
m_ranks[RANK_PRIVATE] = 0;
249+
// Use default values if TheGameSpyConfig is NULL (can happen if called during teardown)
250+
if (TheGameSpyConfig != NULL)
251+
{
252+
m_ranks[RANK_CORPORAL] = TheGameSpyConfig->getPointsForRank(RANK_CORPORAL); // 5
253+
m_ranks[RANK_SERGEANT] = TheGameSpyConfig->getPointsForRank(RANK_SERGEANT); // 10
254+
m_ranks[RANK_LIEUTENANT] = TheGameSpyConfig->getPointsForRank(RANK_LIEUTENANT); // 20
255+
m_ranks[RANK_CAPTAIN] = TheGameSpyConfig->getPointsForRank(RANK_CAPTAIN); // 50
256+
m_ranks[RANK_MAJOR] = TheGameSpyConfig->getPointsForRank(RANK_MAJOR); // 100
257+
m_ranks[RANK_COLONEL] = TheGameSpyConfig->getPointsForRank(RANK_COLONEL); // 200
258+
m_ranks[RANK_BRIGADIER_GENERAL] = TheGameSpyConfig->getPointsForRank(RANK_BRIGADIER_GENERAL); // 500
259+
m_ranks[RANK_GENERAL] = TheGameSpyConfig->getPointsForRank(RANK_GENERAL); // 1000
260+
m_ranks[RANK_COMMANDER_IN_CHIEF] = TheGameSpyConfig->getPointsForRank(RANK_COMMANDER_IN_CHIEF); // 2000
261+
}
262+
else
263+
{
264+
// Use default hardcoded values when TheGameSpyConfig is not available
265+
m_ranks[RANK_CORPORAL] = 5;
266+
m_ranks[RANK_SERGEANT] = 10;
267+
m_ranks[RANK_LIEUTENANT] = 20;
268+
m_ranks[RANK_CAPTAIN] = 50;
269+
m_ranks[RANK_MAJOR] = 100;
270+
m_ranks[RANK_COLONEL] = 200;
271+
m_ranks[RANK_BRIGADIER_GENERAL] = 500;
272+
m_ranks[RANK_GENERAL] = 1000;
273+
m_ranks[RANK_COMMANDER_IN_CHIEF] = 2000;
274+
}
258275

259276
m_winMultiplier = 3.0f;
260277
m_lostMultiplier = 0.0f;

‎GeneralsMD/Code/GameEngine/Source/GameClient/GUI/GUICallbacks/Menus/PopupPlayerInfo.cpp‎

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -247,6 +247,20 @@ void GetAdditionalDisconnectsFromUserFile(PSPlayerStats *stats)
247247
// default values
248248
RankPoints::RankPoints(void)
249249
{
250+
// In GeneralsMD, rank values are set in NGMP_OnlineServices_StatsInterface constructor
251+
// Initialize with default values (these will be overwritten if properly initialized)
252+
m_ranks[RANK_PRIVATE] = 0;
253+
m_ranks[RANK_CORPORAL] = 5;
254+
m_ranks[RANK_SERGEANT] = 10;
255+
m_ranks[RANK_LIEUTENANT] = 20;
256+
m_ranks[RANK_CAPTAIN] = 50;
257+
m_ranks[RANK_MAJOR] = 100;
258+
m_ranks[RANK_COLONEL] = 200;
259+
m_ranks[RANK_BRIGADIER_GENERAL] = 500;
260+
m_ranks[RANK_GENERAL] = 1000;
261+
m_ranks[RANK_COMMANDER_IN_CHIEF] = 2000;
262+
263+
250264
m_winMultiplier = 3.0f;
251265
m_lostMultiplier = 0.0f;
252266
m_hourSpentOnlineMultiplier = 1.0f;
@@ -1587,4 +1601,4 @@ static void messageBoxYes( void )
15871601
RefreshGameListBoxes();
15881602
GameSpyCloseOverlay(GSOVERLAY_PLAYERINFO);
15891603

1590-
}
1604+
}

0 commit comments

Comments
 (0)