diff --git a/src/kits/support/String.cpp b/src/kits/support/String.cpp index 581eb41b24..bf50d2fd92 100644 --- a/src/kits/support/String.cpp +++ b/src/kits/support/String.cpp @@ -1318,7 +1318,7 @@ BString::FindLast(char c, int32 beforeOffset) const return B_ERROR; const char *start = String(); - const char *end = String() + Length() - beforeOffset; + const char *end = String() + beforeOffset; /* Scans the string backwards until we found the character, */ /* or we reach the string's start */ diff --git a/src/tests/kits/support/bstring/StringSearchTest.cpp b/src/tests/kits/support/bstring/StringSearchTest.cpp index b53f30b87e..52876af309 100644 --- a/src/tests/kits/support/bstring/StringSearchTest.cpp +++ b/src/tests/kits/support/bstring/StringSearchTest.cpp @@ -249,6 +249,18 @@ StringSearchTest::PerformTest(void) CPPUNIT_ASSERT(i == B_ERROR); delete string1; + NextSubTest(); + string1 = new BString("abcd abcd"); + i = string1->FindLast('b', 6); + CPPUNIT_ASSERT(i == 6); + delete string1; + + NextSubTest(); + string1 = new BString("abcd abcd"); + i = string1->FindLast('b', 5); + CPPUNIT_ASSERT(i == 1); + delete string1; + NextSubTest(); string1 = new BString("abc abc abc"); i = string1->FindLast("a", 0);