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

Klaas de Vries klaas at klaasgaaf.nl
Mon Dec 31 06:06:55 PST 2012


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

-------------- next part --------------
A non-text attachment was scrubbed...
Name: find_first_not_of.diff
Type: text/x-patch
Size: 1170 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20121231/bbf29e13/attachment.bin>


More information about the llvm-commits mailing list