private int StreamData()
{
var buffer = new byte[bufferSize];
int amountRead = stream.Read(buffer, 0, buffer.Length);
// We need to check if our stream is using our encodings
// BOM, if it is we need to jump it.
int bomOffset = GetBomOffset(buffer);
// Sometimes we'll get a buffer that's smaller then we expect, chop it down
// for the reader:
if (amountRead - bomOffset > 0)
{
if (amountRead != buffer.Length || bomOffset > 0)
{
var smallBuffer = new byte[amountRead - bomOffset];
System.Buffer.BlockCopy(buffer, bomOffset, smallBuffer, 0, amountRead - bomOffset);
streamStack.Push(smallBuffer);
}
else
{
streamStack.Push(buffer);
}
}
return amountRead;
}