fix srs_string_replace deap loop when new_str inclue old_str (#2580)

pull/2581/head
ChenGH 3 years ago committed by GitHub
parent 6bb11a72d0
commit 714e182096
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -308,6 +308,7 @@ string srs_string_replace(string str, string old_str, string new_str)
size_t pos = 0;
while ((pos = ret.find(old_str, pos)) != std::string::npos) {
ret = ret.replace(pos, old_str.length(), new_str);
pos += new_str.length();
}
return ret;

@ -2079,6 +2079,15 @@ VOID TEST(KernelUtilityTest, UtilityString)
str1 = srs_string_replace(str, "o", "XX");
EXPECT_STREQ("HellXX, WXXrld! HellXX, SRS!", str1.c_str());
// origin_str == old_str
std::string origin_str = "xxd";
str1 = srs_string_replace(origin_str, "xxd", "x1d");
EXPECT_STREQ("x1d", str1.c_str());
// new_str include old_str.
str1 = srs_string_replace(str, "Hello", "HelloN");
EXPECT_STREQ("HelloN, World! HelloN, SRS!", str1.c_str());
str1 = srs_string_trim_start(str, "x");
EXPECT_STREQ("Hello, World! Hello, SRS!", str1.c_str());

Loading…
Cancel
Save