Skip to content

Commit a3513e4

Browse files
committed
fix: Fixed WeakReference object alive checking
1 parent fe3577f commit a3513e4

File tree

2 files changed

+11
-5
lines changed

2 files changed

+11
-5
lines changed

MLAPI/Serialization/Pooled/BitStreamPool.cs

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,14 @@ public static PooledBitStream GetStream()
2222
if (overflowStreams.Count > 0)
2323
{
2424
if (LogHelper.CurrentLogLevel <= LogLevel.Developer) LogHelper.LogInfo("Retrieving PooledBitStream from overflow pool. Recent burst?");
25-
WeakReference weakStream = null;
26-
while (overflowStreams.Count > 0 && ((weakStream = overflowStreams.Dequeue()) == null || !weakStream.IsAlive)) ;
27-
if (weakStream.IsAlive) return (PooledBitStream)weakStream.Target;
25+
26+
object weakStream = null;
27+
while (overflowStreams.Count > 0 && ((weakStream = overflowStreams.Dequeue().Target) == null)) ;
28+
29+
if (weakStream != null)
30+
{
31+
return (PooledBitStream)weakStream;
32+
}
2833
}
2934

3035
if (streams.Count == 0)

MLAPI/Transports/UNET/UnetTransport.cs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -66,9 +66,10 @@ public override void Send(ulong clientId, ArraySegment<byte> data, string channe
6666
}
6767
else
6868
{
69-
if (temporaryBufferReference != null && temporaryBufferReference.IsAlive && ((byte[]) temporaryBufferReference.Target).Length >= data.Count)
69+
object bufferRef = null;
70+
if (temporaryBufferReference != null && ((bufferRef = temporaryBufferReference.Target) != null) && ((byte[])bufferRef).Length >= data.Count)
7071
{
71-
buffer = (byte[])temporaryBufferReference.Target;
72+
buffer = (byte[])bufferRef;
7273
}
7374
else
7475
{

0 commit comments

Comments
 (0)