Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 942e3676 authored by Eric Miao's avatar Eric Miao Committed by Automerger Merge Worker
Browse files

Merge "String8: fix infinite loop and segmentation fault in removeAll()" into...

Merge "String8: fix infinite loop and segmentation fault in removeAll()" into main am: 4a33c22c am: 339fecf7 am: e9f38cfe am: 72397221

Original change: https://android-review.googlesource.com/c/platform/system/core/+/2659075



Change-Id: Iea59162fb648c97785b8bc1b2cce8e247a28648d
Signed-off-by: default avatarAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
parents fcd8c605 72397221
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -393,6 +393,11 @@ ssize_t String8::find(const char* other, size_t start) const
}

bool String8::removeAll(const char* other) {
    ALOG_ASSERT(other, "String8::removeAll() requires a non-NULL string");

    if (*other == '\0')
        return true;

    ssize_t index = find(other);
    if (index < 0) return false;

+18 −0
Original line number Diff line number Diff line
@@ -114,3 +114,21 @@ TEST_F(String8Test, append) {
    EXPECT_EQ(NO_MEMORY, s.append("baz", SIZE_MAX));
    EXPECT_STREQ("foobar", s);
}

TEST_F(String8Test, removeAll) {
    String8 s("Hello, world!");

    // NULL input should cause an assertion failure and error message in logcat
    EXPECT_DEATH(s.removeAll(NULL), "");

    // expect to return true and string content should remain unchanged
    EXPECT_TRUE(s.removeAll(""));
    EXPECT_STREQ("Hello, world!", s);

    // expect to return false
    EXPECT_FALSE(s.removeAll("x"));
    EXPECT_STREQ("Hello, world!", s);

    EXPECT_TRUE(s.removeAll("o"));
    EXPECT_STREQ("Hell, wrld!", s);
}