From 94a055c10d7d2ebe5a45b68914a963da39dfb39b Mon Sep 17 00:00:00 2001 From: Oliver Tappe Date: Sun, 5 Mar 2006 18:27:50 +0000 Subject: [PATCH] * fixed broken FindLast() taking a char and an offset * added two more tests that exhibit the (now fixed) problem in FindLast() git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16586 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/kits/support/String.cpp | 2 +- src/tests/kits/support/bstring/StringSearchTest.cpp | 12 ++++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) 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);