mirror of
https://github.com/ZDoom/gzdoom-gles.git
synced 2024-11-11 07:12:16 +00:00
- to avoid problems with the final garbage collection, the players' PendingWeapon needs to be cleared manually.
This is because it can point to a non-standard value which the garbage collector cannot deal with during engine shutdown.
This commit is contained in:
parent
4e685f2b78
commit
ccecfeb45c
1 changed files with 7 additions and 0 deletions
|
@ -2817,6 +2817,13 @@ void PClass::StaticShutdown ()
|
|||
// This flags DObject::Destroy not to call any scripted OnDestroy methods anymore.
|
||||
bVMOperational = false;
|
||||
|
||||
// PendingWeapon must be cleared manually because it is not subjected to the GC if it contains WP_NOCHANGE, which is just RUNTIME_CLASS(AWWeapon).
|
||||
// But that will get cleared here, confusing the GC if the value is left in.
|
||||
for (auto &p : players)
|
||||
{
|
||||
p.PendingWeapon = nullptr;
|
||||
}
|
||||
|
||||
// Unless something went wrong, anything left here should be class and type objects only, which do not own any scripts.
|
||||
bShutdown = true;
|
||||
TypeTable.Clear();
|
||||
|
|
Loading…
Reference in a new issue