Blizzard.Patch.RLEUnpack C# (CSharp) Method

RLEUnpack() private method

private RLEUnpack ( ) : MemoryStream
return System.IO.MemoryStream
        private MemoryStream RLEUnpack()
        {
            MemoryStream ret = new MemoryStream(m_unpackedSize);

            using (BinaryReader br = new BinaryReader(m_compressedDiffStream, Encoding.ASCII))
            {
                while (br.PeekChar() >= 0)
                {
                    byte b = br.ReadByte();
                    if ((b & 0x80) != 0)
                    {
                        var bytes = br.ReadBytes((b & 0x7F) + 1);
                        ret.Write(bytes, 0, bytes.Length);
                    }
                    else
                    {
                        var bytes = new byte[b + 1];
                        ret.Write(bytes, 0, bytes.Length);
                    }

                }
            }

            Debug.Assert(ret.Length == m_unpackedSize);

            ret.Position = 0;
            return ret;
        }