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;
if ((long)_valueSize - (long)_ofs < length)
throw new EndOfStreamException();
fixed (byte* dst = data)
{
CopyMemory(dst + offset, _owner._pointer + _ofs, length);
}
_ofs += (ulong)length;
}