File tree Expand file tree Collapse file tree
GeneralsMD/Code/GameEngine/Include/Common
Generals/Code/GameEngine/Include/Common Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -105,6 +105,15 @@ class Overridable : public MemoryPoolObject
105105 {
106106 if ( m_isOverride )
107107 {
108+ // TheSuperHackers @bugfix Clean up the override chain before deleting this node.
109+ // Without this, deleteInstance(this) triggers ~Overridable() which deletes m_nextOverride
110+ // via the destructor, but the caller may still hold a pointer to the now-freed chain,
111+ // creating a dangling pointer that causes an access violation in getFinalOverride().
112+ if ( m_nextOverride )
113+ {
114+ m_nextOverride->deleteOverrides ();
115+ m_nextOverride = nullptr ;
116+ }
108117 deleteInstance (this );
109118 return nullptr ;
110119 }
Original file line number Diff line number Diff line change @@ -105,6 +105,15 @@ class Overridable : public MemoryPoolObject
105105 {
106106 if ( m_isOverride )
107107 {
108+ // TheSuperHackers @bugfix Clean up the override chain before deleting this node.
109+ // Without this, deleteInstance(this) triggers ~Overridable() which deletes m_nextOverride
110+ // via the destructor, but the caller may still hold a pointer to the now-freed chain,
111+ // creating a dangling pointer that causes an access violation in getFinalOverride().
112+ if ( m_nextOverride )
113+ {
114+ m_nextOverride->deleteOverrides ();
115+ m_nextOverride = nullptr ;
116+ }
108117 deleteInstance (this );
109118 return nullptr ;
110119 }
You can’t perform that action at this time.
0 commit comments