[cfe-commits] [llvm-commits] bug in libc++'s std::string::find_first_not_of

Howard Hinnant hhinnant at apple.com
Mon Dec 31 12:11:50 PST 2012


On Dec 31, 2012, at 9:06 AM, Klaas de Vries <klaas at klaasgaaf.nl> wrote:

> Hi,
> 
> It seems that the libc++ implementation of std::string::find_first_not_of - specifically the one taking a single character as its first argument - does not handle the case where the string contains only the given character (i.e. where it should return string::npos).
> 
> A simple program demonstrating this:
> 
> int main()
> {
>  string test("--");
>  string::size_type i = test.find_first_not_of('-');
>  cout << (i == string::npos ? "okay" : "not okay") << '\n';
> }
> 
> The cause seems to be a typo in the for-loop in the implementation where a check for the inequality will return true for the first character beyond the tested string (a bad thing).
> 
> Attached is what I believe to be a fix, and an updated test case.
> 
> Regards,
> Klaas de Vries

Thanks much Klaas, committed revision 171321.

Could you supply a patch for CREDITS.TXT as well?

Howard




More information about the cfe-commits mailing list