Fix segfault when shields are removed after thinking
For shields, there's a segfault that can trigger if a player's shield is removed using P_RemoveMobj
after it's thinking logic has been invoked. This is caused by the thinking logic calling P_AddShield
to add the shield for processing later when P_RunShields
is invoked. The problem is that P_RemoveMobj
doesn't actually remove the shield from the list of shields to be processed by P_RunShields
, so if it's removed after it has been added to shields to be processed, it will attempt to process the removed shield once P_RunShields
is invoked and segfault.