http://bugzilla.novell.com/show_bug.cgi?id=589236
http://bugzilla.novell.com/show_bug.cgi?id=589236#c0 Summary: StreamReader class raise IndexOutOfRangeException Classification: Mono Product: Mono: Class Libraries Version: SVN Platform: All OS/Version: All Status: NEW Severity: Normal Priority: P5 - None Component: CORLIB AssignedTo: [email protected] ReportedBy: [email protected] QAContact: [email protected] Found By: --- Blocker: --- User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/533.2 (KHTML, like Gecko) Chrome/5.0.342.5 Safari/533.2 becuase of auto-detecting encoding in StreamReader, it will change the encoder, but forget to change decoded_buffer size. bug 411861 and 534137 may be related to the bug because of auto-detect encoding. I suggest change to code inside StreamReader.ReadBuffer() .. parse_start = DoChecks (cbEncoded); if (old != encoding){ decoder = encoding.GetDecoder (); // Change the decoded_buffer after decoder changed. // in order to prevent the IndexOutOfRangeException when decode. decoded_buffer = new char [encoding.GetMaxCharCount (this.buffer_size) + 1]; } .. Reproducible: Always Steps to Reproduce: the following code should reproduce the bug: using System; using System.Collections.Generic; using System.Text; using System.IO; namespace TestProgram { class Program { static void Main(string[] args) { // to test StreamReader.cs bug in mono int testlines = 2048; // all data should larger than stream reader default buffer size string testdata = "test"; MemoryStream ms = new MemoryStream(); // write utf8 encoding data. using (StreamWriter sw = new StreamWriter(ms, Encoding.UTF8)) { for (int i = 0; i < testlines; i++) sw.WriteLine(testdata); } MemoryStream readms = new MemoryStream(ms.GetBuffer()); // read from streamreader and let streamreader detect encoding using (StreamReader sr = new StreamReader(readms, Encoding.Unicode, true)) for (int i = 0; i < testlines; i++) { string line = sr.ReadLine(); if (line != testdata) Console.WriteLine("read data error : " + line + " , but should be " + testdata); } Console.WriteLine("check over"); Console.ReadLine(); } } } Actual Results: Unhandled Exception: System.IndexOutOfRangeException: Array index is out of range. at System.IO.StreamReader.FindNextEOL () [0x00000] at System.IO.StreamReader.ReadLine () [0x00000] at ConsoleApplication67.Program.Main (System.String[] args) [0x00000] Expected Results: mono should execute the code without exceptions. -- Configure bugmail: http://bugzilla.novell.com/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the QA contact for the bug. You are the assignee for the bug. _______________________________________________ mono-bugs maillist - [email protected] http://lists.ximian.com/mailman/listinfo/mono-bugs
