Committing Avination's memleak fix-a-thon, installment #2

Ensure items coming off the lockless queue are released. Also ensure this
is done when the queue is cleared.
0.7.4.1
Melanie 2012-07-23 19:26:21 +01:00
parent 7d16d0664e
commit 55c1c10c0d
1 changed files with 10 additions and 1 deletions

View File

@ -99,8 +99,13 @@ namespace OpenSim.Framework
} }
else else
{ {
item = oldHeadNext.Item; item = oldHeadNext.Item;
haveAdvancedHead = CAS(ref head, oldHead, oldHeadNext); haveAdvancedHead = CAS(ref head, oldHead, oldHeadNext);
if (haveAdvancedHead)
{
oldHeadNext.Item = default(T);
oldHead.Next = null;
}
} }
} }
} }
@ -111,6 +116,10 @@ namespace OpenSim.Framework
public void Clear() public void Clear()
{ {
// ugly
T item;
while(count > 0)
Dequeue(out item);
Init(); Init();
} }