diff --git a/Projects/UOContent/Mobiles/Vendors/GenericBuy.cs b/Projects/UOContent/Mobiles/Vendors/GenericBuy.cs index 5b5d628b2..6e698eebb 100644 --- a/Projects/UOContent/Mobiles/Vendors/GenericBuy.cs +++ b/Projects/UOContent/Mobiles/Vendors/GenericBuy.cs @@ -282,22 +282,14 @@ namespace Server.Mobiles var version = reader.ReadInt(); - m_Mobiles = reader.ReadEntityList(); + List entities = new (Items); + entities.AddRange(reader.ReadEntityList()); - for (var i = 0; i < m_Mobiles.Count; ++i) - { - m_Mobiles[i].Delete(); - } + m_Mobiles = new List(); // This cannot be null in case it is referenced before disposing - m_Mobiles.Clear(); + Timer.DelayCall(DeleteEntities, entities); - for (var i = Items.Count - 1; i >= 0; --i) - { - if (i < Items.Count) - { - Items[i].Delete(); - } - } + m_Table = new Dictionary(); if (m_Cache == null) { @@ -307,8 +299,14 @@ namespace Server.Mobiles { Delete(); } + } - m_Table = new Dictionary(); + private void DeleteEntities(List entities) + { + foreach (var entity in entities) + { + entity.Delete(); + } } } }