public override void ReadBlock(byte[] data, int offset, int length)
{
if (length < Buf.Length)
{
base.ReadBlock(data, offset, length);
return;
}
var l = End - Pos;
Array.Copy(Buf, Pos, data, offset, l);
offset += l;
length -= l;
Pos += l;
_owner._stream.Position = (long)_ofs;
var read = _owner._stream.Read(data, offset, length);
if (read != length)
{
throw new EndOfStreamException();
}
_ofs += (ulong)read;
}