in src/log4net/Util/CyclicBuffer.cs [210:252]
public void Resize(int newSize)
{
lock (syncRoot)
{
if (newSize < 0)
{
throw SystemInfo.CreateArgumentOutOfRangeException(nameof(newSize), newSize, $"Parameter: {nameof(newSize)}, Value: [{newSize}] out of range. A positive integer is required.");
}
if (newSize == numElems)
{
return; // nothing to do
}
LoggingEvent[] temp = new LoggingEvent[newSize];
int loopLen = (newSize < numElems) ? newSize : numElems;
for(int i = 0; i < loopLen; i++)
{
temp[i] = events[first];
events[first] = null;
if (++first == numElems)
{
first = 0;
}
}
events = temp;
first = 0;
numElems = loopLen;
maxSize = newSize;
if (loopLen == newSize)
{
last = 0;
}
else
{
last = loopLen;
}
}
}