@@ -34,7 +34,7 @@ public NetPacket GetWithProperty(PacketProperty property)
3434
3535 public NetPacket GetPacket ( int size )
3636 {
37- if ( size > NetConstants . MaxPacketSize )
37+ if ( size > NetConstants . MaxPacketSize )
3838 return new NetPacket ( size ) ;
3939
4040 NetPacket packet ;
@@ -46,15 +46,10 @@ public NetPacket GetPacket(int size)
4646 } while ( packet != Interlocked . CompareExchange ( ref _head , packet . Next , packet ) ) ;
4747
4848#if DEBUG_REFCOUNT
49- if ( Interlocked . Increment ( ref packet . RefCount ) > 1 )
50- {
51- Interlocked . Decrement ( ref packet . RefCount ) ;
52- NetDebug . WriteError ( "PacketRefCount more than 1: {0}" , Environment . StackTrace ) ;
53- return new NetPacket ( size ) ;
54- }
49+ Interlocked . Increment ( ref packet . RefCount ) ;
5550#endif
5651
57- _count -- ;
52+ Interlocked . Decrement ( ref _count ) ;
5853 packet . Size = size ;
5954 if ( packet . RawData . Length < size )
6055 packet . RawData = new byte [ size ] ;
@@ -69,20 +64,21 @@ public void Recycle(NetPacket packet)
6964 return ;
7065 }
7166
72- _count ++ ;
67+ #if DEBUG_REFCOUNT
68+ int result = Interlocked . Decrement ( ref packet . RefCount ) ;
69+ if ( result != 0 )
70+ NetDebug . WriteError ( "PacketRefCount invalid: {0}, {1}" , result , Environment . StackTrace ) ;
71+ #endif
72+
73+ Interlocked . Increment ( ref _count ) ;
7374
7475 //Clean fragmented flag
7576 packet . RawData [ 0 ] = 0 ;
7677
77- #if DEBUG_REFCOUNT
78- if ( packet . RefCount > 0 )
79- Interlocked . Decrement ( ref packet . RefCount ) ;
80- #endif
81-
8278 do
8379 {
8480 packet . Next = _head ;
8581 } while ( packet . Next != Interlocked . CompareExchange ( ref _head , packet , packet . Next ) ) ;
8682 }
8783 }
88- }
84+ }
0 commit comments