fix: Fixes massive capacity bug with pooled ref queue/list (#1865)
This commit is contained in:
parent
96de1fdaa1
commit
21836cf62f
4 changed files with 20 additions and 30 deletions
|
|
@ -6,7 +6,6 @@ using System.Buffers;
|
|||
using System.Collections.Generic;
|
||||
using System.Diagnostics;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.InteropServices;
|
||||
using Server.Buffers;
|
||||
|
||||
namespace Server.Collections;
|
||||
|
|
@ -152,14 +151,14 @@ public ref struct PooledRefList<T>
|
|||
|
||||
if (_items.Length > 0)
|
||||
{
|
||||
Clear();
|
||||
Array.Clear(_items);
|
||||
ArrayPool.Return(_items);
|
||||
}
|
||||
_items = newItems;
|
||||
}
|
||||
else
|
||||
{
|
||||
Clear();
|
||||
Array.Clear(_items);
|
||||
ArrayPool.Return(_items);
|
||||
_items = s_emptyArray;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -305,7 +305,7 @@ public ref struct PooledRefQueue<T>
|
|||
|
||||
if (_array.Length > 0)
|
||||
{
|
||||
Clear();
|
||||
Array.Clear(_array);
|
||||
(_mt ? ArrayPool<T>.Shared : STArrayPool<T>.Shared).Return(_array);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -2,19 +2,10 @@ using System;
|
|||
using System.Collections.Generic;
|
||||
using System.Net;
|
||||
using Server.Accounting;
|
||||
using Server.Engines.CannedEvil;
|
||||
using Server.Engines.Help;
|
||||
using Server.Engines.PlayerMurderSystem;
|
||||
using Server.Engines.Virtues;
|
||||
using Server.Logging;
|
||||
using Server.Network;
|
||||
using Server.Regions;
|
||||
using Server.Spells.Fifth;
|
||||
using Server.Spells.First;
|
||||
using Server.Spells.Mysticism;
|
||||
using Server.Spells.Necromancy;
|
||||
using Server.Spells.Ninjitsu;
|
||||
using Server.Spells.Second;
|
||||
|
||||
namespace Server.Misc;
|
||||
|
||||
|
|
@ -236,20 +227,6 @@ public static class AccountHandler
|
|||
|
||||
m.Delete();
|
||||
|
||||
StaminaSystem.OnPlayerDeleted(m);
|
||||
JusticeVirtue.OnPlayerDeleted(m);
|
||||
PlayerMurderSystem.OnPlayerDeleted(m);
|
||||
ChampionTitleSystem.OnPlayerDeleted(m);
|
||||
|
||||
// Spells
|
||||
MagicReflectSpell.EndReflect(m);
|
||||
ReactiveArmorSpell.EndArmor(m);
|
||||
ProtectionSpell.EndProtection(m);
|
||||
StoneFormSpell.RemoveEffects(m);
|
||||
AnimateDeadSpell.RemoveEffects(m);
|
||||
SummonFamiliarSpell.RemoveEffects(m);
|
||||
AnimalForm.RemoveLastAnimalForm(m);
|
||||
|
||||
state.SendCharacterListUpdate(acct);
|
||||
return;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -28,9 +28,12 @@ using Server.SkillHandlers;
|
|||
using Server.Spells;
|
||||
using Server.Spells.Bushido;
|
||||
using Server.Spells.Fifth;
|
||||
using Server.Spells.First;
|
||||
using Server.Spells.Fourth;
|
||||
using Server.Spells.Mysticism;
|
||||
using Server.Spells.Necromancy;
|
||||
using Server.Spells.Ninjitsu;
|
||||
using Server.Spells.Second;
|
||||
using Server.Spells.Seventh;
|
||||
using Server.Spells.Sixth;
|
||||
using Server.Spells.Spellweaving;
|
||||
|
|
@ -3382,14 +3385,25 @@ namespace Server.Mobiles
|
|||
base.OnAfterDelete();
|
||||
|
||||
var faction = Faction.Find(this);
|
||||
|
||||
faction?.RemoveMember(this);
|
||||
|
||||
MLQuestSystem.HandleDeletion(this);
|
||||
|
||||
BaseHouse.HandleDeletion(this);
|
||||
|
||||
DisguisePersistence.RemoveTimer(this);
|
||||
|
||||
StaminaSystem.OnPlayerDeleted(this);
|
||||
JusticeVirtue.OnPlayerDeleted(this);
|
||||
PlayerMurderSystem.OnPlayerDeleted(this);
|
||||
ChampionTitleSystem.OnPlayerDeleted(this);
|
||||
|
||||
// Spells
|
||||
MagicReflectSpell.EndReflect(this);
|
||||
ReactiveArmorSpell.EndArmor(this);
|
||||
ProtectionSpell.EndProtection(this);
|
||||
StoneFormSpell.RemoveEffects(this);
|
||||
AnimateDeadSpell.RemoveEffects(this);
|
||||
SummonFamiliarSpell.RemoveEffects(this);
|
||||
AnimalForm.RemoveLastAnimalForm(this);
|
||||
}
|
||||
|
||||
public override void GetProperties(IPropertyList list)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue