http://bugzilla.novell.com/show_bug.cgi?id=605340
http://bugzilla.novell.com/show_bug.cgi?id=605340#c0 Summary: Unexpected exception on calling String.LastIndexOf on empty strings with startIndex=-1 Classification: Mono Product: Mono: Class Libraries Version: SVN Platform: All OS/Version: All Status: NEW Severity: Normal Priority: P5 - None Component: CORLIB AssignedTo: mono-bugs@lists.ximian.com ReportedBy: lorenz.schwittm...@gmail.com QAContact: mono-bugs@lists.ximian.com Found By: --- Blocker: --- User-Agent: Mozilla/5.0 (X11; U; Linux x86_64; de; rv:1.9.2.3) Gecko/20100423 Ubuntu/10.04 (lucid) Firefox/3.6.3 I just encountered a reproducible crash in an application which runs fine on Microsoft's .NET. After some debugging, I isolated the problem in the following call: String str = ""; str.LastIndexOf('.', -1); Microsoft's documentation (http://msdn.microsoft.com/en-us/library/1tw91fa3%28v=VS.100%29.aspx) says, the method will throw an exception if the second parameter is greater than this.Length. However, there seems to be a check at the top of the function which returns -1 if this.Length ==0. No exception is thrown in their implementation. Reproducible: Always Steps to Reproduce: 1. Compile a test application which contains "".LastIndexOf('.', -1); 2. Run application on both mono and MS .NET Actual Results: The application crashes only on mono. Expected Results: The application shouldn't crash. Although MS lies in their specs, mono's goal should be to be as close as possible to their implementation. Otherwise the "write once, run everywhere" argument is invalid. I've found a similar bug report (https://bugzilla.novell.com/show_bug.cgi?id=486234) which deals with an overloaded version of String.LastIndexOf. However, the committed fix does only care about calls with startIndex == 0. I have verified that there is no exception on calling on an empty string with startIndex=-1 for the following signatures: String.LastIndexOf(String, Int32) String.LastIndexOf(Char, Int32, Int32) String.LastIndexOf(String, Int32, Int32) String.LastIndexOf(String, Int32, StringComparison) String.LastIndexOf(String, Int32, Int32, StringComparison) I suggest to fix ALL of them: If the string is empty, return -1. No matter what other arguments are passed. -- 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 - mono-bugs@lists.ximian.com http://lists.ximian.com/mailman/listinfo/mono-bugs