diff --git a/Lidgren.Network/NetPeer.Internal.cs b/Lidgren.Network/NetPeer.Internal.cs index 63d4542..0e92b57 100644 --- a/Lidgren.Network/NetPeer.Internal.cs +++ b/Lidgren.Network/NetPeer.Internal.cs @@ -67,9 +67,6 @@ namespace Lidgren.Network throw new NetException("Executing on wrong thread! Should be library system thread (is " + ct.Name + " mId " + ct.ManagedThreadId + ")"); } - // - // Network loop - // private void InitializeNetwork() { // @@ -143,6 +140,9 @@ namespace Lidgren.Network } } + // + // Network loop + // private void NetworkLoop() { VerifyNetworkThread(); diff --git a/Lidgren.Network/NetQueue.cs b/Lidgren.Network/NetQueue.cs index 3049990..e90817b 100644 --- a/Lidgren.Network/NetQueue.cs +++ b/Lidgren.Network/NetQueue.cs @@ -173,8 +173,16 @@ namespace Lidgren.Network int ptr = m_head; for (int i = 0; i < m_size; i++) { - if (m_items[ptr].Equals(item)) - return true; + if (m_items[ptr] == null) + { + if (item == null) + return true; + } + else + { + if (m_items[ptr].Equals(item)) + return true; + } ptr = (ptr + 1) % m_items.Length; } } @@ -188,6 +196,7 @@ namespace Lidgren.Network for (int i = 0; i < m_items.Length; i++) m_items[i] = default(T); m_head = 0; + m_size = 0; } } } diff --git a/UnitTests/NetQueueTests.cs b/UnitTests/NetQueueTests.cs index 8763423..229feed 100644 --- a/UnitTests/NetQueueTests.cs +++ b/UnitTests/NetQueueTests.cs @@ -14,6 +14,12 @@ namespace UnitTests queue.Enqueue(2); queue.Enqueue(3); + if (queue.Contains(4)) + throw new Exception("NetQueue Contains failure"); + + if (!queue.Contains(2)) + throw new Exception("NetQueue Contains failure 2"); + if (queue.Count != 3) throw new Exception("NetQueue failed"); if (queue.TryDequeue() != 1)