From 8271a381d5238ed7b479b1c4c9d877432ffceea1 Mon Sep 17 00:00:00 2001 From: Mauller <26652186+Mauller@users.noreply.github.com> Date: Tue, 1 Jul 2025 20:06:47 +0100 Subject: [PATCH] [GEN][ZH] Fix crash within Team::killTeam() caused by an invalid player retrieval in ScriptEngine::getPlayerFromAsciiString() --- .../GameEngine/Source/GameLogic/ScriptEngine/ScriptEngine.cpp | 3 ++- .../GameEngine/Source/GameLogic/ScriptEngine/ScriptEngine.cpp | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/Generals/Code/GameEngine/Source/GameLogic/ScriptEngine/ScriptEngine.cpp b/Generals/Code/GameEngine/Source/GameLogic/ScriptEngine/ScriptEngine.cpp index 8d63c563fe..8c127c256f 100644 --- a/Generals/Code/GameEngine/Source/GameLogic/ScriptEngine/ScriptEngine.cpp +++ b/Generals/Code/GameEngine/Source/GameLogic/ScriptEngine/ScriptEngine.cpp @@ -5125,7 +5125,8 @@ Player *ScriptEngine::getPlayerFromAsciiString(const AsciiString& playerString) else if (playerString == THIS_PLAYER_ENEMY) { return getSkirmishEnemyPlayer(); } - else { + // TheSuperHackers @bugfix Mauller 01/07/2025 we need to ignore empty player strings as they can return an invalid and uninitialized player from the player list + else if (playerString.isNotEmpty()){ NameKeyType key = NAMEKEY(playerString); Player *pPlayer = ThePlayerList->findPlayerWithNameKey(key); if (pPlayer!=NULL) { diff --git a/GeneralsMD/Code/GameEngine/Source/GameLogic/ScriptEngine/ScriptEngine.cpp b/GeneralsMD/Code/GameEngine/Source/GameLogic/ScriptEngine/ScriptEngine.cpp index 1f90248a31..ea5b23eaa3 100644 --- a/GeneralsMD/Code/GameEngine/Source/GameLogic/ScriptEngine/ScriptEngine.cpp +++ b/GeneralsMD/Code/GameEngine/Source/GameLogic/ScriptEngine/ScriptEngine.cpp @@ -5841,7 +5841,8 @@ Player *ScriptEngine::getPlayerFromAsciiString(const AsciiString& playerString) else if (playerString == THIS_PLAYER_ENEMY) { return getSkirmishEnemyPlayer(); } - else { + // TheSuperHackers @bugfix Mauller 01/07/2025 we need to ignore empty player strings as they can return an invalid and uninitialized player from the player list + else if (playerString.isNotEmpty()){ NameKeyType key = NAMEKEY(playerString); Player *pPlayer = ThePlayerList->findPlayerWithNameKey(key); if (pPlayer!=NULL) {