private void parse(Stream stream, long start, long finish) { byte[] eol2 = new byte[m_EOL.Length << 1]; Array.Copy(m_EOL, eol2, m_EOL.Length); Array.Copy(m_EOL, 0, eol2, m_EOL.Length, m_EOL.Length); long eol2PosAfterHeader = StreamHelpers.Find(stream, eol2, start, finish); if (eol2PosAfterHeader == StreamHelpers.NOT_FOUND_POS) { throw new NFXException(StringConsts.MULTIPART_DOUBLE_EOL_ISNT_FOUND_AFTER_HEADER_ERROR + this.GetType().Name + ".Parse"); } string str = StreamHelpers.GetString(stream, start, eol2PosAfterHeader - 1); m_Parameters = MultiPartParameters.Parse(str, m_EOL, m_Encoding); m_Content = new byte[finish - eol2PosAfterHeader - eol2.Length + 1]; stream.Position = eol2PosAfterHeader + eol2.Length; stream.Read(m_Content, 0, m_Content.Length); m_Content = new byte[finish - (eol2PosAfterHeader + eol2.Length) + 1]; stream.Position = eol2PosAfterHeader + eol2.Length; stream.Read(m_Content, 0, m_Content.Length); if (m_Parameters.IsField) { m_ContentString = m_Encoding.GetString(m_Content); } }