mirror of
https://github.com/ossrs/srs.git
synced 2025-03-09 15:49:59 +00:00
fix srs_string_replace deap loop when new_str inclue old_str (#2580)
This commit is contained in:
parent
6bb11a72d0
commit
714e182096
2 changed files with 10 additions and 0 deletions
|
@ -308,6 +308,7 @@ string srs_string_replace(string str, string old_str, string new_str)
|
||||||
size_t pos = 0;
|
size_t pos = 0;
|
||||||
while ((pos = ret.find(old_str, pos)) != std::string::npos) {
|
while ((pos = ret.find(old_str, pos)) != std::string::npos) {
|
||||||
ret = ret.replace(pos, old_str.length(), new_str);
|
ret = ret.replace(pos, old_str.length(), new_str);
|
||||||
|
pos += new_str.length();
|
||||||
}
|
}
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
|
|
|
@ -2079,6 +2079,15 @@ VOID TEST(KernelUtilityTest, UtilityString)
|
||||||
str1 = srs_string_replace(str, "o", "XX");
|
str1 = srs_string_replace(str, "o", "XX");
|
||||||
EXPECT_STREQ("HellXX, WXXrld! HellXX, SRS!", str1.c_str());
|
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");
|
str1 = srs_string_trim_start(str, "x");
|
||||||
EXPECT_STREQ("Hello, World! Hello, SRS!", str1.c_str());
|
EXPECT_STREQ("Hello, World! Hello, SRS!", str1.c_str());
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue