Browse Source

Fixed WeakEvent Compact

pull/7372/head
Nikita Tsukanov 4 years ago
parent
commit
bb9f5e75f3
  1. 12
      src/Avalonia.Base/Utilities/WeakEvent.cs

12
src/Avalonia.Base/Utilities/WeakEvent.cs

@ -75,7 +75,7 @@ public class WeakEvent<TSender, TEventArgs> : WeakEvent where TEventArgs : Event
get
{
if (_reference == null)
return false;
return true;
if (_reference.TryGetTarget(out var target))
return true;
_reference = null;
@ -179,15 +179,15 @@ public class WeakEvent<TSender, TEventArgs> : WeakEvent where TEventArgs : Event
int empty = -1;
for (var c = 0; c < _count; c++)
{
ref var r = ref _data[c];
ref var currentRef = ref _data[c];
//Mark current index as first empty
if (r.IsEmpty && empty == -1)
if (currentRef.IsEmpty && empty == -1)
empty = c;
//If current element isn't null and we have an empty one
if (!r.IsEmpty && empty != -1)
if (!currentRef.IsEmpty && empty != -1)
{
_data[c] = default;
_data[empty] = r;
_data[empty] = currentRef;
currentRef = default;
empty++;
}
}

Loading…
Cancel
Save