From 218a3c0d63da3fa4456c63dd48670df12b66f2ce Mon Sep 17 00:00:00 2001 From: bobtista Date: Fri, 16 Jan 2026 18:55:28 -0500 Subject: [PATCH] bugfix(particlesystem): Prevent double-destroy and use-after-free in ParticleSystem::destroy --- .../GameEngine/Source/GameClient/System/ParticleSys.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/GeneralsMD/Code/GameEngine/Source/GameClient/System/ParticleSys.cpp b/GeneralsMD/Code/GameEngine/Source/GameClient/System/ParticleSys.cpp index 7e0be3c505a..f341401d86c 100644 --- a/GeneralsMD/Code/GameEngine/Source/GameClient/System/ParticleSys.cpp +++ b/GeneralsMD/Code/GameEngine/Source/GameClient/System/ParticleSys.cpp @@ -1263,10 +1263,16 @@ void ParticleSystem::stop( void ) // ------------------------------------------------------------------------------------------------ void ParticleSystem::destroy( void ) { + if (m_isDestroyed) + { + return; + } + m_isDestroyed = true; if( m_slaveSystem ) { m_slaveSystem->destroy(); // If we don't it will leak forever. We are solely responsible for it. + m_slaveSystem = nullptr; } }