diff --git a/OpenSim/Region/ScriptEngine/Shared/LSL_Types.cs b/OpenSim/Region/ScriptEngine/Shared/LSL_Types.cs index d52bfb97fb..6c1ff46206 100644 --- a/OpenSim/Region/ScriptEngine/Shared/LSL_Types.cs +++ b/OpenSim/Region/ScriptEngine/Shared/LSL_Types.cs @@ -679,7 +679,10 @@ namespace OpenSim.Region.ScriptEngine.Shared get { if (m_data == null) + { m_data=new object[0]; + return 0; + } return m_data.Length; } } @@ -923,26 +926,20 @@ namespace OpenSim.Region.ScriptEngine.Shared public static bool operator ==(list a, list b) { - int la = -1; - int lb = -1; - try { la = a.Length; } - catch (NullReferenceException) { } - try { lb = b.Length; } - catch (NullReferenceException) { } - - return la == lb; + if (b is null) + return (a is null); + if (a is null) + return (b is null); + return a.Length == b.Length; } public static bool operator !=(list a, list b) { - int la = -1; - int lb = -1; - try { la = a.Length; } - catch (NullReferenceException) { } - try { lb = b.Length; } - catch (NullReferenceException) { } - - return la != lb; + if (b is null) + return !(a is null); + if (a is null) + return !(b is null); + return a.Length != b.Length; } public void Add(object o) diff --git a/OpenSim/Region/ScriptEngine/YEngine/XMRHeapTracker.cs b/OpenSim/Region/ScriptEngine/YEngine/XMRHeapTracker.cs index f3e38c421d..549f6da86c 100644 --- a/OpenSim/Region/ScriptEngine/YEngine/XMRHeapTracker.cs +++ b/OpenSim/Region/ScriptEngine/YEngine/XMRHeapTracker.cs @@ -105,33 +105,19 @@ namespace OpenSim.Region.ScriptEngine.Yengine public void Save(LSL_List lis) { - if (lis == null) - usage = instance.UpdateLocalsHeapUse(usage, 0); - else - usage = instance.UpdateLocalsHeapUse(usage, Size(lis)); + usage = (lis == null) ? instance.UpdateLocalsHeapUse(usage, 0) : instance.UpdateLocalsHeapUse(usage, lis.Size); value = lis; } public void Restore(LSL_List lis) { value = lis; - if (lis != null) - usage = Size(lis); - else - usage = 0; + usage = (lis is null) ? 0 : lis.Size; } - //private static int counter = 5; public static int Size(LSL_List lis) { - try - { - return lis.Size; - } - catch - { - return 0; - } + return lis is null ? 0 : lis.Size; } } diff --git a/OpenSim/Region/ScriptEngine/YEngine/XMRInstAbstract.cs b/OpenSim/Region/ScriptEngine/YEngine/XMRInstAbstract.cs index adc33f40fb..754c950ede 100644 --- a/OpenSim/Region/ScriptEngine/YEngine/XMRInstAbstract.cs +++ b/OpenSim/Region/ScriptEngine/YEngine/XMRInstAbstract.cs @@ -237,7 +237,10 @@ namespace OpenSim.Region.ScriptEngine.Yengine if (liss != null) { foreach (LSL_List lis in liss) - newheapuse += HeapTrackerList.Size(lis); + { + if(!(lis is null)) + newheapuse += lis.Size; + } iarLists = liss; } else @@ -322,7 +325,10 @@ namespace OpenSim.Region.ScriptEngine.Yengine if(iarLists != null) { foreach(LSL_List lis in iarLists) - newheapuse -= HeapTrackerList.Size(lis); + { + if (!(lis is null)) + newheapuse += lis.Size; + } iarLists = null; } if(iarObjects != null)