Anton Pevtsov wrote: > This verfies similar to http://issues.apache.org/jira/browse/STDCXX-175 > possible problems. > > Yes, it is tricky, the passed array has not enough length (-1 is > interpreted as max_size() + 1), > but I think that the method implementation should not create the string > with such length. Yes, that's what I'm thinking as well. I don't think it ever does. > Formally the behaviour should be undefined, so we can remove these tests > as more strict than required by the standard. I see. I think you're right, it is undefined. > But I suggest to leave them: all methods pass these tests and the > exception throwning looks more useful than undefined behaviour for this > situation. I agree with that in general but I don't think we can define the behavior in all these cases. Consider these two examples: string s ("abc"); s.find ("def", 0, 5); s.find ("def", 0, -1); There is no way for us to detect that 5 is too large in the first call to find() so the the function returns npos because "def" is not found. But in the second example which is equally invalid we throw, even though we could just as easily return npos. I think we might as well return npos is all such cases for consistency. Doing so also simplifies the implementation. Unless you see something wrong with this change, I will go ahead and change string::find() et al not to throw. Then we will modify the tests to exercise this new behavior. Let me know your thoughts. Martin